|  | <?xml version="1.0" encoding="ISO-8859-1"?> | 
|  | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | 
|  | <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!-- | 
|  | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | 
|  | This file is generated from xml source: DO NOT EDIT | 
|  | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | 
|  | --> | 
|  | <title>Fichiers journaux - Serveur Apache HTTP</title> | 
|  | <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> | 
|  | <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> | 
|  | <link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /> | 
|  | <link href="./images/favicon.ico" rel="shortcut icon" /></head> | 
|  | <body id="manual-page"><div id="page-header"> | 
|  | <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p> | 
|  | <p class="apache">Serveur Apache HTTP Version 2.3</p> | 
|  | <img alt="" src="./images/feather.gif" /></div> | 
|  | <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div> | 
|  | <div id="path"> | 
|  | <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.3</a></div><div id="page-content"><div id="preamble"><h1>Fichiers journaux</h1> | 
|  | <div class="toplang"> | 
|  | <p><span>Langues Disponibles: </span><a href="./en/logs.html" hreflang="en" rel="alternate" title="English"> en </a> | | 
|  | <a href="./fr/logs.html" title="Français"> fr </a> | | 
|  | <a href="./ja/logs.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | | 
|  | <a href="./ko/logs.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | | 
|  | <a href="./tr/logs.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> | 
|  | </div> | 
|  |  | 
|  | <p>Pour véritablement gérer un serveur web, | 
|  | il est nécessaire de disposer d'un | 
|  | retour d'informations à propos de l'activité et des performances du | 
|  | serveur, ainsi que de tout problème qui pourrait survenir. Le serveur HTTP | 
|  | Apache propose des fonctionnalités de journalisation souples et très | 
|  | complètes. Ce document décrit comment configurer ces fonctionnalités de | 
|  | journalisation et interpréter le contenu des journaux.</p> | 
|  | </div> | 
|  | <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#security">Avertissement à propos de la sécurité</a></li> | 
|  | <li><img alt="" src="./images/down.gif" /> <a href="#errorlog">Journal des erreurs</a></li> | 
|  | <li><img alt="" src="./images/down.gif" /> <a href="#accesslog">Journal des accès</a></li> | 
|  | <li><img alt="" src="./images/down.gif" /> <a href="#rotation">Rotation des journaux</a></li> | 
|  | <li><img alt="" src="./images/down.gif" /> <a href="#piped">Journaux redirigés</a></li> | 
|  | <li><img alt="" src="./images/down.gif" /> <a href="#virtualhost">Hôtes virtuels</a></li> | 
|  | <li><img alt="" src="./images/down.gif" /> <a href="#other">Autres fichiers journaux</a></li> | 
|  | </ul></div> | 
|  | <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> | 
|  | <div class="section"> | 
|  | <h2><a name="security" id="security">Avertissement à propos de la sécurité</a></h2> | 
|  |  | 
|  |  | 
|  | <p>Tout utilisateur qui a les droits en écriture sur le répertoire dans | 
|  | lequel Apache écrit ses journaux pourra quasi | 
|  | certainement avoir accès à l'uid sous lequel le serveur est démarré, en | 
|  | l'occurrence habituellement root. N'accordez <em>PAS</em> aux utilisateurs | 
|  | l'accès en écriture au répertoire dans lequel les journaux sont stockés | 
|  | sans savoir exactement quelles en seraient les conséquences ; voir le | 
|  | document <a href="misc/security_tips.html">conseils sur la sécurité</a> | 
|  | pour plus de détails.</p> | 
|  |  | 
|  | <p>En outre, les journaux peuvent contenir des informations fournies | 
|  | directement par un client, sans caractères d'échappement. Des clients mal | 
|  | intentionnés peuvent donc insérer des caractères de contrôle dans les | 
|  | journaux, et il convient par conséquent d'être très prudent lors de la | 
|  | manipulation des journaux bruts.</p> | 
|  | </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> | 
|  | <div class="section"> | 
|  | <h2><a name="errorlog" id="errorlog">Journal des erreurs</a></h2> | 
|  |  | 
|  |  | 
|  | <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td /><td><ul><li><code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code></li><li><code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code></li></ul></td></tr></table> | 
|  |  | 
|  | <p>Le journal des erreurs du serveur, dont le nom et la localisation sont | 
|  | définis par la directive <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code>, | 
|  | est le journal le plus important. C'est dans celui-ci | 
|  | que le démon Apache httpd va envoyer les informations de diagnostic et | 
|  | enregistrer toutes les erreurs qui surviennent lors du traitement des | 
|  | requêtes. Lorsqu'un problème survient au démarrage du serveur ou pendant | 
|  | son fonctionnement, la première chose à faire est de regarder dans ce | 
|  | journal, car il vous renseignera souvent sur le problème rencontré et | 
|  | la manière d'y remédier.</p> | 
|  |  | 
|  | <p>Le journal des erreurs est habituellement enregistré dans un fichier | 
|  | (en général <code>error_log</code> sur les systèmes de type Unix et | 
|  | <code>error.log</code> sur Windows et OS/2). Sur les systèmes de type Unix, | 
|  | le serveur peut aussi enregistrer ses erreurs dans | 
|  | <code>syslog</code> ou les | 
|  | <a href="#piped">rediriger vers un programme</a> par l'intermédiaire d'un | 
|  | tube de communication (pipe).</p> | 
|  |  | 
|  | <p>Le format du journal des erreurs est descriptif et de forme | 
|  | relativement libre. Certaines informations apparaissent cependant dans la | 
|  | plupart des entrées du journal. Voici un message typique | 
|  | à titre d'exemple : </p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | [Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] | 
|  | client denied by server configuration: | 
|  | /export/home/live/ap/htdocs/test | 
|  | </code></p></div> | 
|  |  | 
|  | <p>Le premier champ de l'entrée du journal est la date et l'heure du | 
|  | message. Le second champ indique la sévérité de l'erreur rapportée. La | 
|  | directive <code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code> permet de | 
|  | restreindre le type des erreurs qui doivent être enregistrées | 
|  | dans le journal des erreurs en définissant leur niveau de sévérité. Le | 
|  | troisième champ contient l'adresse IP du client qui a généré l'erreur. | 
|  | Vient ensuite le message proprement dit, qui indique dans ce cas que le | 
|  | serveur a été configuré pour interdire l'accès au client. Le serveur | 
|  | indique le chemin système du document requis (et non | 
|  | son chemin web).</p> | 
|  |  | 
|  | <p>Une grande variété de messages différents peuvent apparaître dans le | 
|  | journal des erreurs. La plupart d'entre eux sont similaires à l'exemple | 
|  | ci-dessus. Le journal des erreurs peut aussi contenir des informations de | 
|  | débogage en provenance de scripts CGI. Toute information qu'un script CGI | 
|  | écrit sur la sortie d'erreurs standard <code>stderr</code> sera recopiée | 
|  | telle quelle dans le journal des erreurs.</p> | 
|  |  | 
|  | <p>Il n'est pas possible de personnaliser le journal des erreurs en ajoutant ou en | 
|  | supprimant des informations. Cependant, les entrées du journal des erreurs | 
|  | qui concernent certaines requêtes possèdent des entrées correspondantes | 
|  | dans le <a href="#accesslog">journal des accès</a>. Ainsi, l'entrée de | 
|  | l'exemple ci-dessus correspond à une entrée du journal des accès avec un | 
|  | code de statut 403. Etant donné qu'il est possible de personnaliser le | 
|  | journal des accès, vous pouvez obtenir d'avantage d'informations sur les | 
|  | circonstances d'une erreur en consultant ce journal.</p> | 
|  |  | 
|  | <p>Pendant la phase de test, il est souvent utile de visualiser en continu | 
|  | le journal des erreurs afin de détecter tout problème éventuel. Sur les | 
|  | systèmes de type Unix, ceci s'effectue à l'aide de la commande :</p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | tail -f error_log | 
|  | </code></p></div> | 
|  | </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> | 
|  | <div class="section"> | 
|  | <h2><a name="accesslog" id="accesslog">Journal des accès</a></h2> | 
|  |  | 
|  |  | 
|  | <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code></li></ul></td></tr></table> | 
|  |  | 
|  | <p>Le journal des accès au serveur | 
|  | enregistre toutes les requêtes que traite | 
|  | ce dernier. La localisation et le contenu du journal des accès sont définis | 
|  | par la directive <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>. | 
|  | La directive <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> | 
|  | permet de simplifier la sélection du contenu du journal. Cette section | 
|  | décrit comment configurer le serveur pour l'enregistrement des informations | 
|  | dans le journal des accès.</p> | 
|  |  | 
|  | <p>Bien évidemment, le stockage d'informations dans le journal des accès | 
|  | n'est que le point de départ de la gestion de la journalisation. L'étape | 
|  | suivante consiste à analyser ces informations de façon à pouvoir en | 
|  | extraire des statistiques utiles. L'analyse de journaux en général est en | 
|  | dehors du sujet de ce document et ne fait pas vraiment partie intégrante | 
|  | du travail du serveur web lui-même. Pour plus d'informations à propos de ce | 
|  | sujet et des applications dédiées à l'analyse de journaux, vous pouvez vous | 
|  | référer à <a href="http://dmoz.org/Computers/Software/Internet/     Site_Management/Log_analysis/">Open Directory</a> ou | 
|  | <a href="http://dir.yahoo.com/Computers_and_Internet/Software/     Internet/World_Wide_Web/Servers/Log_Analysis_Tools/">Yahoo</a>.</p> | 
|  |  | 
|  | <p>Différentes versions du démon Apache httpd utilisaient d'autres modules | 
|  | et directives pour contrôler la journalisation des accès, à l'instar de | 
|  | mod_log_referer, mod_log_agent, et de la directive | 
|  | <code>TransferLog</code>. La directive | 
|  | <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> rassemble | 
|  | désormais les fonctionnalités de toutes les anciennes directives.</p> | 
|  |  | 
|  | <p>Le format du journal des accès est hautement configurable. Il est | 
|  | défini à l'aide d'une chaîne de format qui ressemble sensiblement à la | 
|  | chaîne de format de style langage C de printf(1). Vous trouverez quelques | 
|  | exemples dans les sections suivantes. Pour une liste exhaustive de ce que | 
|  | peut contenir une chaîne de format, vous pouvez vous référer au chapitre | 
|  | <a href="mod/mod_log_config.html#formats">chaînes de format</a> de la | 
|  | documentation du module <code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code>.</p> | 
|  |  | 
|  | <h3><a name="common" id="common">Format habituel du journal</a></h3> | 
|  |  | 
|  |  | 
|  | <p>Voici une configuration typique pour le journal des accès :</p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | LogFormat "%h %l %u %t \"%r\" %>s %b" common<br /> | 
|  | CustomLog logs/access_log common | 
|  | </code></p></div> | 
|  |  | 
|  | <p>Ici est définie l'<em>identité</em> <code>common</code> qui est | 
|  | ensuite associée à une chaîne de format de journalisation particulière. | 
|  | La chaîne de format est constituée de directives débutant par le | 
|  | caractère %, chacune d'entre elles indiquant au serveur d'enregistrer | 
|  | un élément particulier d'information. Des caractères littéraux peuvent | 
|  | aussi être insérés dans la chaîne de format ; il seront copiés tels | 
|  | quels dans le flux de sortie destiné à la journalisation. | 
|  | Les guillemets (<code>"</code>) doivent être échappées en les faisant | 
|  | précéder d'un anti-slash (<code>\</code>) afin qu'elles ne soient pas | 
|  | interprétées comme la fin de la chaîne de format. La chaîne de format | 
|  | peut aussi contenir les caractères de contrôle spéciaux | 
|  | "<code>\n</code>" et "<code>\t</code>" pour insérer respectivement | 
|  | un passage à la ligne et une tabulation.</p> | 
|  |  | 
|  | <p>La directive <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> | 
|  | définit un nouveau fichier journal en l'associant à l'identité | 
|  | précédemment définie. Le chemin du nom de fichier associé au journal | 
|  | des accès est relatif au chemin défini par la directive | 
|  | <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code>, sauf s'il | 
|  | débute par un slash.</p> | 
|  |  | 
|  | <p>La configuration ci-dessus va enregistrer les entrées de | 
|  | journalisation selon un format connu sous le nom de | 
|  | Common Log Format (CLF) pour "Format de journalisation standard". | 
|  | Ce format standard peut être produit par de nombreux serveurs web | 
|  | différents et lu par de nombreux programmes d'analyse de journaux. | 
|  | Les entrées de fichier journal générées selon le format CLF | 
|  | ressemblent à ceci :</p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET | 
|  | /apache_pb.gif HTTP/1.0" 200 2326 | 
|  | </code></p></div> | 
|  |  | 
|  | <p>Chaque partie de cette entrée de journal est décrite | 
|  | dans ce qui suit.</p> | 
|  |  | 
|  | <dl> | 
|  | <dt><code>127.0.0.1</code> (<code>%h</code>)</dt> | 
|  |  | 
|  | <dd>Il s'agit de l'adresse IP du client (l'hôte distant) qui a envoyé | 
|  | la requête au serveur. Si la directive | 
|  | <code class="directive"><a href="./mod/core.html#hostnamelookups">HostnameLookups</a></code> est positionnée à | 
|  | <code>On</code>, le serveur va essayer de déterminer le nom de l'hôte | 
|  | et de l'enregistrer à la place de l'adresse IP. Cette configuration | 
|  | n'est cependant pas recommandée car elle peut ralentir le serveur de | 
|  | manière significative. Il est par conséquent préférable d'utiliser un | 
|  | processeur d'analyse de journaux a posteriori | 
|  | tel que <code class="program"><a href="./programs/logresolve.html">logresolve</a></code> | 
|  | pour déterminer les noms d'hôte. L'adresse IP indiquée ici n'est pas | 
|  | nécessairement l'adresse IP de la machine devant laquelle se trouve | 
|  | l'utilisateur. Si un serveur mandataire s'intercale entre le serveur | 
|  | et l'utilisateur, l'adresse indiquée sera celle du mandataire et non | 
|  | celle de la machine à l'origine de la requête.</dd> | 
|  |  | 
|  | <dt><code>-</code> (<code>%l</code>)</dt> | 
|  |  | 
|  | <dd>Le "trait d'union" indique que la portion d'information | 
|  | correspondante n'est pas disponible. Dans le cas présent, l'information | 
|  | non disponible est l'identité (RFC 1413) du client telle que déterminée | 
|  | par <code>identd</code> sur la machine cliente. Cette information est | 
|  | très peu fiable et ne devrait jamais être utilisée, sauf dans le cas | 
|  | de réseaux internes étroitement contrôlés. Le démon httpd ne cherchera | 
|  | d'ailleurs à obtenir cette information que si la directive | 
|  | <code class="directive"><a href="./mod/core.html#identitycheck">IdentityCheck</a></code> est positionnée | 
|  | à <code>On</code>.</dd> | 
|  |  | 
|  | <dt><code>frank</code> (<code>%u</code>)</dt> | 
|  |  | 
|  | <dd>Il s'agit de l'identifiant utilisateur de la personne qui a | 
|  | demandé le document, issu d'une authentification HTTP. | 
|  | Ce même identifiant est en général fourni aux scripts CGI par | 
|  | l'intermédiaire de la valeur de la variable d'environnement | 
|  | <code>REMOTE_USER</code>. Si le statut de la requête (voir plus loin) | 
|  | est 401, cette identifiant n'est pas fiable car l'utilisateur n'est | 
|  | pas encore authentifié. Si le document n'est pas protégé par | 
|  | mot de passe, cette partie d'information sera représentée par | 
|  | "<code>-</code>", comme la partie précédente.</dd> | 
|  |  | 
|  | <dt><code>[10/Oct/2000:13:55:36 -0700]</code> | 
|  | (<code>%t</code>)</dt> | 
|  |  | 
|  | <dd> | 
|  | L'heure à laquelle la requête a été reçue. | 
|  | Le format est le suivant : | 
|  |  | 
|  | <p class="indent"> | 
|  | <code>[jour/mois/année:heure:minutes:secondes zone]<br /> | 
|  | jour = 2*chiffre<br /> | 
|  | mois = 3*lettre<br /> | 
|  | année = 4*chiffre<br /> | 
|  | heure = 2*chiffre<br /> | 
|  | minutes = 2*chiffre<br /> | 
|  | secondes = 2*chiffre<br /> | 
|  | zone = (`+' | `-') 4*chiffre</code> | 
|  | </p>Il est possible de modifier le format d'affichage de l'heure | 
|  | en spécifiant <code>%{format}t</code> dans la chaîne de format du | 
|  | journal, où <code>format</code> est une chaîne de format de même | 
|  | forme que celle de la fonction <code>strftime(3)</code> de la | 
|  | bibliothèque C standard. | 
|  | </dd> | 
|  |  | 
|  | <dt><code>"GET /apache_pb.gif HTTP/1.0"</code> | 
|  | (<code>\"%r\"</code>)</dt> | 
|  |  | 
|  | <dd>La ligne de la requête du client est placée entre guillemets. | 
|  | Elle contient de nombreuses informations utiles. Tout d'abord, la | 
|  | méthode utilisée par le client est <code>GET</code>. Ensuite, le | 
|  | client a demandé la ressource <code>/apache_pb.gif</code>, et enfin, | 
|  | le client a utilisé le protocole <code>HTTP/1.0</code>. Il est aussi | 
|  | possible d'enregistrer séparément une ou plusieurs parties de la | 
|  | requête. Par exemple, la chaîne de format "<code>%m %U %q %H</code>" | 
|  | va enregistrer la méthode, le chemin, la chaîne de la requête et le | 
|  | protocole, ce qui donnera le même résultat que | 
|  | "<code>%r</code>".</dd> | 
|  |  | 
|  | <dt><code>200</code> (<code>%>s</code>)</dt> | 
|  |  | 
|  | <dd>C'est le code de statut que le serveur retourne au client. Cette | 
|  | information est très importante car elle indique si la requête a fait | 
|  | l'objet d'une réponse positive (codes commençant par 2), une | 
|  | redirection (codes commençant par 3), une erreur due au client (codes | 
|  | commençant par 4), ou une erreur due au serveur (codes commençant | 
|  | par 5). Vous trouverez la liste complète des codes de statut possibles | 
|  | dans la <a href="http://www.w3.org/Protocols/rfc2616/  rfc2616.txt">specification HTTP</a> (RFC2616 section 10).</dd> | 
|  |  | 
|  | <dt><code>2326</code> (<code>%b</code>)</dt> | 
|  |  | 
|  | <dd>La dernière partie indique la taille de l'objet retourné au client, | 
|  | en-têtes non compris. Si aucun contenu n'a été retourné au client, cette | 
|  | partie contiendra "<code>-</code>". Pour indiquer l'absence de contenu | 
|  | par "<code>0</code>", utilisez <code>%B</code> au lieu de | 
|  | <code>%b</code>.</dd> | 
|  | </dl> | 
|  |  | 
|  |  | 
|  | <h3><a name="combined" id="combined">Combined Log Format (Format de journalisation combiné)</a></h3> | 
|  |  | 
|  |  | 
|  | <p>Une autre chaîne de format couramment utilisée est le | 
|  | "Combined Log Format" (Format de journalisation combiné). Il s'utilise | 
|  | comme suit :</p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" | 
|  | \"%{User-agent}i\"" combined<br /> | 
|  | CustomLog log/access_log combined | 
|  | </code></p></div> | 
|  |  | 
|  | <p>Ce format est identique au Common Log Format, avec deux champs | 
|  | supplémentaires. Chacun de ces deux champs utilise la directive | 
|  | commençant par le caractère "%" <code>%{<em>header</em>}i</code>, | 
|  | où <em>header</em> peut être n'importe quel en-tête de requête HTTP. | 
|  | Avec ce format, le journal des accès se présentera comme suit :</p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET | 
|  | /apache_pb.gif HTTP/1.0" 200 2326 | 
|  | "http://www.example.com/start.html" "Mozilla/4.08 [en] | 
|  | (Win98; I ;Nav)" | 
|  | </code></p></div> | 
|  |  | 
|  | <p>Les champs supplémentaires sont :</p> | 
|  |  | 
|  | <dl> | 
|  | <dt><code>"http://www.example.com/start.html"</code> | 
|  | (<code>\"%{Referer}i\"</code>)</dt> | 
|  |  | 
|  | <dd>L'en-tête "Referer" (sic) de la requête HTTP. Il indique le site | 
|  | depuis lequel le client prétend avoir lancé sa requête. (Ce doit être | 
|  | la page qui contient un lien vers <code>/apache_pb.gif</code> ou | 
|  | inclut ce dernier fichier).</dd> | 
|  |  | 
|  | <dt><code>"Mozilla/4.08 [en] (Win98; I ;Nav)"</code> | 
|  | (<code>\"%{User-agent}i\"</code>)</dt> | 
|  |  | 
|  | <dd>L'en-tête User-Agent de la requête HTTP. C'est une information | 
|  | d'identification que le navigateur du client envoie à propos | 
|  | de lui-même.</dd> | 
|  | </dl> | 
|  |  | 
|  |  | 
|  | <h3><a name="multiple" id="multiple">Journaux d'accès multiples</a></h3> | 
|  |  | 
|  |  | 
|  | <p>Plusieurs journaux d'accès peuvent être créés en spécifiant tout | 
|  | simplement plusieurs directives | 
|  | <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> dans le | 
|  | fichier de configuration. Par exemple, les directives suivantes vont | 
|  | créer trois journaux d'accès. Le premier contiendra les informations | 
|  | de base CLF, le second les informations du Referer, et le troisième | 
|  | les informations sur le navigateur. Les deux dernières directives | 
|  | <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> montrent | 
|  | comment simuler les effets des directives <code>ReferLog</code> et | 
|  | <code>AgentLog</code>.</p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | LogFormat "%h %l %u %t \"%r\" %>s %b" common<br /> | 
|  | CustomLog logs/access_log common<br /> | 
|  | CustomLog logs/referer_log "%{Referer}i -> %U"<br /> | 
|  | CustomLog logs/agent_log "%{User-agent}i" | 
|  | </code></p></div> | 
|  |  | 
|  | <p>Cet exemple montre aussi qu'il n'est pas obligatoire d'associer | 
|  | une chaîne de format à un alias au moyen de la directive | 
|  | <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code>. Elle peut | 
|  | être définie directement dans la ligne de la directive | 
|  | <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>.</p> | 
|  |  | 
|  |  | 
|  | <h3><a name="conditional" id="conditional">Journalisation conditionnelle</a></h3> | 
|  |  | 
|  |  | 
|  | <p>Il est parfois souhaitable d'exclure certaines entrées des journaux | 
|  | d'accès en fonction des caractéristiques de la requête du client. On | 
|  | peut aisément accomplir ceci à l'aide des | 
|  | <a href="env.html">variables d'environnement</a>. Tout d'abord, une | 
|  | variable d'environnement doit être définie pour indiquer que la | 
|  | requête remplit certaines conditions. Pour ceci, on utilise en général | 
|  | la directive <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>, | 
|  | puis la clause <code>env=</code> de la directive | 
|  | <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> pour inclure | 
|  | ou exclure les requêtes pour lesquelles | 
|  | la variable d'environnement est définie. | 
|  | Quelques exemples :</p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | # Marque les requêtes en provenance de l'interface loop-back<br /> | 
|  | SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog<br /> | 
|  | # Marque les requêtes pour le fichier robots.txt<br /> | 
|  | SetEnvIf Request_URI "^/robots\.txt$" dontlog<br /> | 
|  | # Journalise toutes les autres requêtes<br /> | 
|  | CustomLog logs/access_log common env=!dontlog | 
|  | </code></p></div> | 
|  |  | 
|  | <p>Autre exemple, imaginons l'enregistrement des requêtes en provenance | 
|  | d'utilisateurs de langue anglaise dans un journal, et celles des autres | 
|  | utilisateurs dans un autre journal.</p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | SetEnvIf Accept-Language "en" english<br /> | 
|  | CustomLog logs/english_log common env=english<br /> | 
|  | CustomLog logs/non_english_log common env=!english | 
|  | </code></p></div> | 
|  |  | 
|  | <p>Bien que nous venions de montrer que la journalisation conditionnelle | 
|  | est souple et très puissante, cette méthode de contrôle du contenu des | 
|  | journaux n'est pas la seule. Les fichiers journaux sont plus utiles | 
|  | quand ils contiennent un enregistrement complet de l'activité du serveur, | 
|  | et il est souvent plus aisé de simplement traiter à posteriori les fichiers | 
|  | journaux pour supprimer les requêtes que vous ne voulez pas y voir | 
|  | apparaître.</p> | 
|  |  | 
|  | </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> | 
|  | <div class="section"> | 
|  | <h2><a name="rotation" id="rotation">Rotation des journaux</a></h2> | 
|  |  | 
|  |  | 
|  | <p>Même dans le cas d'un serveur modérément sollicité, la quantité | 
|  | d'informations stockées dans les fichiers journaux est très importante. | 
|  | Le fichier journal des accès grossit en général d'1 Mo ou plus toutes | 
|  | les 10000 requêtes. Il est par conséquent nécessaire d'effectuer | 
|  | périodiquement la rotation des journaux en déplaçant ou supprimant les | 
|  | fichiers correspondants. On ne peut pas le faire pendant que le serveur | 
|  | est en cours d'exécution, car Apache va continuer à écrire dans l'ancien | 
|  | fichier journal aussi longtemps qu'il le maintiendra ouvert. | 
|  | C'est pourquoi le serveur doit être | 
|  | <a href="stopping.html">redémarré</a> après le déplacement ou la | 
|  | suppression des fichiers journaux de façon à ce qu'il en ouvre | 
|  | de nouveaux.</p> | 
|  |  | 
|  | <p>Avec un redémarrage <em>graceful</em>, on peut faire en sorte que le | 
|  | serveur ouvre de nouveaux fichiers journaux sans perdre de connexions | 
|  | existantes ou en cours avec les clients. Cependant, pour que ceci soit | 
|  | possible, le serveur doit continuer à écrire dans les anciens fichiers | 
|  | journaux pendant qu'il termine le traitement des requêtes en cours. | 
|  | Il est donc nécessaire d'attendre un certain temps après le rédémarrage | 
|  | avant d'effectuer tout traitement sur les fichiers journaux. Voici un | 
|  | scénario typique dans lequel on effectue une simple rotation des | 
|  | journaux en compressant les anciens fichiers correspondants afin | 
|  | de gagner de l'espace disque :</p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | mv access_log access_log.old<br /> | 
|  | mv error_log error_log.old<br /> | 
|  | apachectl graceful<br /> | 
|  | sleep 600<br /> | 
|  | gzip access_log.old error_log.old | 
|  | </code></p></div> | 
|  |  | 
|  | <p>La section suivante présente une autre méthode de rotation des journaux | 
|  | qui consiste à utiliser les | 
|  | <a href="#piped">journaux redirigés</a>.</p> | 
|  | </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> | 
|  | <div class="section"> | 
|  | <h2><a name="piped" id="piped">Journaux redirigés</a></h2> | 
|  |  | 
|  |  | 
|  | <p>Nous avons vu que le démon httpd écrivait les informations de | 
|  | journalisation des erreurs et des accès dans un fichier journal ; | 
|  | il peut aussi | 
|  | rediriger ces informations vers un autre processus par l'intermédiaire d'un | 
|  | tube de communication (pipe). Cette fonctionnalité améliore | 
|  | considérablement la souplesse de la journalisation, sans ajouter de code | 
|  | au serveur principal. Pour rediriger les informations de journalisation | 
|  | vers un tube de communication, remplacez simplement le nom de fichier | 
|  | journal par | 
|  | le caractère pipe "<code>|</code>", suivi du nom de l'exécutable qui va | 
|  | recueillir les entrées de journal sur son entrée standard. Apache va | 
|  | lancer le processus de redirection des journaux au moment du démarrage du | 
|  | serveur, et le relancera s'il cesse de fonctionner | 
|  | pendant l'exécution du serveur. | 
|  | (Nous dénommons cette technique "journalisation | 
|  | redirigée fiable" grâce à cette dernière fonctionnalité.)</p> | 
|  |  | 
|  | <p>Les processus de journalisation redirigée sont lancés par le processus | 
|  | httpd parent, et héritent de l'UID de ce dernier. Cela signifie que les | 
|  | programmes de journalisation dirigée s'exécutent généralement en tant que | 
|  | root. Il est donc très important que ces programmes soient simples et | 
|  | sécurisés.</p> | 
|  |  | 
|  | <p>Un des grands avantages de la journalisation redirigée est la possibilité | 
|  | d'effectuer la rotation des journaux sans avoir à redémarrer le serveur. Pour | 
|  | accomplir cette tâche, le serveur HTTP Apache fournit un programme simple | 
|  | appelé <code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code>. Par exemple, pour une rotation des | 
|  | journaux toutes les 24 heures, ajoutez ces lignes :</p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | CustomLog "|/usr/local/apache/bin/rotatelogs | 
|  | /var/log/access_log 86400" common | 
|  | </code></p></div> | 
|  |  | 
|  | <p>Notez que l'ensemble de la commande qui sera appelée par le tube de | 
|  | communication a été placée entre guillemets. Bien que cet exemple | 
|  | concerne le journal des accès, la même technique peut être utilisée | 
|  | pour le journal des erreurs.</p> | 
|  |  | 
|  | <p>Il existe un autre programme de rotation des journaux similaire mais | 
|  | beaucoup plus souple : il s'agit de "cronolog", non fourni par Apache, | 
|  | mais disponible <a href="http://www.cronolog.org/">ici</a>.</p> | 
|  |  | 
|  | <p>Comme la journalisation conditionnelle, la journalisation redirigée est | 
|  | un outil très puissant, mais si elle existe, il est préférable d'utiliser | 
|  | une solution plus simple comme le traitement à posteriori hors ligne.</p> | 
|  | </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> | 
|  | <div class="section"> | 
|  | <h2><a name="virtualhost" id="virtualhost">Hôtes virtuels</a></h2> | 
|  |  | 
|  |  | 
|  | <p>Lorsqu'un serveur possède plusieurs <a href="vhosts/">hôtes virtuels</a>, il existe de nombreuses solutions pour gérer | 
|  | les fichiers journaux. Par exemple, on peut utiliser les journaux comme | 
|  | s'il s'agissait d'un serveur avec un seul hôte. Il suffit pour cela de | 
|  | placer les directives de journalisation en dehors des sections | 
|  | <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> au niveau | 
|  | du serveur principal, ce qui a pour effet de journaliser toutes les | 
|  | requêtes dans le même journal des accès et des erreurs. Cette technique | 
|  | est cependant inappropriée pour recueillir des statistiques sur chaque | 
|  | hôte virtuel individuellement.</p> | 
|  |  | 
|  | <p>Si des directives <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> ou | 
|  | <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> sont placées dans une section | 
|  | <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code>, toutes les | 
|  | requêtes ou erreurs pour cet hôte virtuel ne seront enregistrées que dans | 
|  | le fichier spécifié. Tout hôte virtuel qui ne possède pas de directives de | 
|  | journalisation verra ses requêtes enregistrées dans le journal du serveur | 
|  | principal. Cette technique est appropriée pour un petit nombre d'hôtes | 
|  | virtuels, mais si ce nombre est important, elle peut devenir compliquée à | 
|  | gérer. En outre, des problèmes de <a href="vhosts/fd-limits.html">nombre de descripteurs | 
|  | de fichiers insuffisant</a> peuvent rapidement apparaître.</p> | 
|  |  | 
|  | <p>Il existe un très bon compromis pour le journal des accès. En intégrant | 
|  | les informations à propos de l'hôte virtuel à la chaîne de format du | 
|  | journal, il est possible de journaliser tous les hôtes dans le même | 
|  | journal, puis de séparer ultérieurement le journal en plusieurs journaux | 
|  | individuels. Considérons par exemple les directives suivantes :</p> | 
|  |  | 
|  | <div class="example"><p><code> | 
|  | LogFormat "%v %l %u %t \"%r\" %>s %b" | 
|  | comonvhost<br /> | 
|  | CustomLog logs/access_log comonvhost | 
|  | </code></p></div> | 
|  |  | 
|  | <p>Le champ <code>%v</code> sert à enregistrer le nom de l'hôte virtuel qui | 
|  | traite la requête. Un programme tel que <a href="programs/other.html">split-logfile</a> peut ensuite être utilisé | 
|  | pour générer "à froid" autant de journaux que d'hôtes virtuels.</p> | 
|  | </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> | 
|  | <div class="section"> | 
|  | <h2><a name="other" id="other">Autres fichiers journaux</a></h2> | 
|  |  | 
|  |  | 
|  | <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code></li><li><code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_log_forensic.html#forensiclog">ForensicLog</a></code></li><li><code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewritelog">RewriteLog</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptlogbuffer">ScriptLogBuffer</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptloglength">ScriptLogLength</a></code></li></ul></td></tr></table> | 
|  |  | 
|  | <h3>Enregistrement du nombre réel d'octets envoyés et reçus</h3> | 
|  |  | 
|  |  | 
|  | <p>Le module <code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code> fournit deux champs | 
|  | <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> supplémentaires | 
|  | (%I et %O) qui permettent d'enregistrer le nombre réel d'octets reçus et | 
|  | envoyés sur le réseau.</p> | 
|  |  | 
|  |  | 
|  | <h3>Journalisation de style investigation judiciaire (forensic logging)</h3> | 
|  |  | 
|  |  | 
|  | <p>Le module <code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code> permet la journalisation | 
|  | à des fins d'investigation judiciaire des requêtes des clients. La | 
|  | journalisation est effectuée avant et après le traitement de la requête, | 
|  | qui fait donc l'objet de deux entrées dans le journal. Le générateur de | 
|  | journaux d'investigation est très strict et ne permet aucune | 
|  | personnalisation. C'est un inestimable outil de débogage et de sécurité.</p> | 
|  |  | 
|  |  | 
|  | <h3><a name="pidfile" id="pidfile">Fichier PID</a></h3> | 
|  |  | 
|  |  | 
|  | <p>Au démarrage, le démon httpd Apache enregistre l'identifiant du | 
|  | processus httpd parent dans le fichier <code>logs/httpd.pid</code>. | 
|  | Le nom de ce fichier peut être modifié à l'aide de la directive | 
|  | <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code>. Cet identifiant | 
|  | permet à l'administrateur de redémarrer et arrêter le démon en | 
|  | envoyant des signaux au processus parent ; sous Windows, vous devez | 
|  | utiliser l'option de ligne de commande -k. Pour plus de détails, | 
|  | consulter la page <a href="stopping.html">Arrêt et redémarrage</a>.</p> | 
|  |  | 
|  |  | 
|  | <h3><a name="scriptlog" id="scriptlog">Journal des scripts</a></h3> | 
|  |  | 
|  |  | 
|  | <p>Afin de faciliter le débogage, la directive | 
|  | <code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code> vous permet | 
|  | d'enregistrer les entrées et sorties des scripts CGI. Elle ne doit être | 
|  | utilisée que pendant la phase de test, et en aucun cas sur un | 
|  | serveur en production. Vous trouverez plus d'informations dans la | 
|  | documentation du module <a href="mod/mod_cgi.html">mod_cgi</a>.</p> | 
|  |  | 
|  |  | 
|  | <h3><a name="rewritelog" id="rewritelog">Journal de réécriture</a></h3> | 
|  |  | 
|  |  | 
|  | <p>Lorsqu'on utilise les fonctionnalités puissantes et complexes du | 
|  | module <a href="mod/mod_rewrite.html">mod_rewrite</a>, il est presque | 
|  | toujours nécessaire d'utiliser la directive | 
|  | <code class="directive"><a href="./mod/mod_rewrite.html#rewritelog">RewriteLog</a></code> afin de | 
|  | faciliter le débogage. Ce fichier journal fournit une analyse détaillée | 
|  | de la transformation des requêtes par le moteur de réécriture. Le niveau | 
|  | de détail est contrôlé par la directive | 
|  | <code class="directive"><a href="./mod/mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></code>.</p> | 
|  |  | 
|  | </div></div> | 
|  | <div class="bottomlang"> | 
|  | <p><span>Langues Disponibles: </span><a href="./en/logs.html" hreflang="en" rel="alternate" title="English"> en </a> | | 
|  | <a href="./fr/logs.html" title="Français"> fr </a> | | 
|  | <a href="./ja/logs.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | | 
|  | <a href="./ko/logs.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | | 
|  | <a href="./tr/logs.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> | 
|  | </div><div id="footer"> | 
|  | <p class="apache">Copyright 2008 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> | 
|  | <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div> | 
|  | </body></html> |