]> granicus.if.org Git - apache/blob - docs/manual/logs.html.fr
Now with a rebuild-all
[apache] / docs / manual / logs.html.fr
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
4         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>Fichiers journaux - Serveur Apache HTTP</title>
9 <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="./images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <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>
15 <p class="apache">Serveur Apache HTTP Version 2.3</p>
16 <img alt="" src="./images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
18 <div id="path">
19 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.3</a></div><div id="page-content"><div id="preamble"><h1>Fichiers journaux</h1>
20 <div class="toplang">
21 <p><span>Langues Disponibles: </span><a href="./en/logs.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
22 <a href="./fr/logs.html" title="Français">&nbsp;fr&nbsp;</a> |
23 <a href="./ja/logs.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
24 <a href="./ko/logs.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
25 <a href="./tr/logs.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
26 </div>
27
28     <p>Pour véritablement gérer un serveur web,
29     il est nécessaire de disposer d'un
30     retour d'informations à propos de l'activité et des performances du
31     serveur, ainsi que de tout problème qui pourrait survenir. Le serveur HTTP
32     Apache propose des fonctionnalités de journalisation souples et très
33     complètes. Ce document décrit comment configurer ces fonctionnalités de
34     journalisation et interpréter le contenu des journaux.</p>
35   </div>
36 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#overview">Vue d'ensemble</a></li>
37 <li><img alt="" src="./images/down.gif" /> <a href="#security">Avertissement à propos de la sécurité</a></li>
38 <li><img alt="" src="./images/down.gif" /> <a href="#errorlog">Journal des erreurs</a></li>
39 <li><img alt="" src="./images/down.gif" /> <a href="#accesslog">Journal des accès</a></li>
40 <li><img alt="" src="./images/down.gif" /> <a href="#rotation">Rotation des journaux</a></li>
41 <li><img alt="" src="./images/down.gif" /> <a href="#piped">Journaux redirigés</a></li>
42 <li><img alt="" src="./images/down.gif" /> <a href="#virtualhost">Hôtes virtuels</a></li>
43 <li><img alt="" src="./images/down.gif" /> <a href="#other">Autres fichiers journaux</a></li>
44 </ul></div>
45 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
46 <div class="section">
47 <h2><a name="overview" id="overview">Vue d'ensemble</a></h2>
48     
49
50   <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_log_forensic.html">mod_log_forensic</a></code></li><li><code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li></ul></td><td /></tr></table>
51
52   <p>
53   Le serveur HTTP Apache fournit toute une variété de mécanismes
54   différents pour la journalisation de tout ce qui peut se passer au
55   sein de votre serveur, depuis la requête initiale, en passant par le
56   processus de mise en correspondance des URLs, et jusqu'à la fermeture
57   de la connexion, y compris toute erreur pouvant survenir au cours du
58   traitement. De plus, certains modules tiers fournissent des
59   fonctionnalités de journalisation ou insèrent des entrées dans les
60   fichiers journaux existants, et les applications comme les programmes
61   CGI, les scripts PHP ou autres gestionnaires peuvent envoyer des
62   messages vers le journal des erreurs du serveur.
63   </p>
64
65   <p>
66   Ce document décrit le fonctionnement des modules de journalisation
67   fournis en standard avec le serveur httpd.
68   </p>
69
70   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
71 <div class="section">
72 <h2><a name="security" id="security">Avertissement à propos de la sécurité</a></h2>
73     
74
75     <p>Tout utilisateur qui a les droits en écriture sur le répertoire dans
76     lequel Apache httpd écrit ses journaux pourra quasi
77     certainement avoir accès à l'uid sous lequel le serveur est démarré, en
78     l'occurrence habituellement root. N'accordez <em>PAS</em> aux utilisateurs
79     l'accès en écriture au répertoire dans lequel les journaux sont stockés
80     sans savoir exactement quelles en seraient les conséquences ; voir le
81     document <a href="misc/security_tips.html">conseils sur la sécurité</a>
82     pour plus de détails.</p>
83
84     <p>En outre, les journaux peuvent contenir des informations fournies
85     directement par un client, sans caractères d'échappement. Des clients mal
86     intentionnés peuvent donc insérer des caractères de contrôle dans les
87     journaux, et il convient par conséquent d'être très prudent lors de la
88     manipulation des journaux bruts.</p>
89   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
90 <div class="section">
91 <h2><a name="errorlog" id="errorlog">Journal des erreurs</a></h2>
92     
93
94     <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/core.html">core</a></code></li></ul></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>
95
96     <p>Le journal des erreurs du serveur, dont le nom et la localisation sont
97     définis par la directive <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code>,
98     est le journal le plus important. C'est dans celui-ci
99     que le démon Apache httpd va envoyer les informations de diagnostic et
100     enregistrer toutes les erreurs qui surviennent lors du traitement des
101     requêtes. Lorsqu'un problème survient au démarrage du serveur ou pendant
102     son fonctionnement, la première chose à faire est de regarder dans ce
103     journal, car il vous renseignera souvent sur le problème rencontré et
104     la manière d'y remédier.</p>
105
106     <p>Le journal des erreurs est habituellement enregistré dans un fichier
107     (en général <code>error_log</code> sur les systèmes de type Unix et
108     <code>error.log</code> sur Windows et OS/2). Sur les systèmes de type Unix,
109     le serveur peut aussi enregistrer ses erreurs dans
110     <code>syslog</code> ou les
111     <a href="#piped">rediriger vers un programme</a> par l'intermédiaire d'un
112     tube de communication (pipe).</p>
113
114     <p>Le format du journal des erreurs est descriptif et de forme
115     relativement libre. Certaines informations apparaissent cependant dans la
116     plupart des entrées du journal. Voici un message typique
117     à titre d'exemple : </p>
118
119     <div class="example"><p><code>
120       [Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1]
121       client denied by server configuration:
122       /export/home/live/ap/htdocs/test
123     </code></p></div>
124
125     <p>Le premier champ de l'entrée du journal est la date et l'heure du
126     message. Le second champ indique la sévérité de l'erreur rapportée. La
127     directive <code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code> permet de
128     restreindre le type des erreurs qui doivent être enregistrées
129     dans le journal des erreurs en définissant leur niveau de sévérité. Le
130     troisième champ contient l'adresse IP du client qui a généré l'erreur.
131     Vient ensuite le message proprement dit, qui indique dans ce cas que le
132     serveur a été configuré pour interdire l'accès au client. Le serveur
133     indique le chemin système du document requis (et non
134     son chemin web).</p>
135
136     <p>Une grande variété de messages différents peuvent apparaître dans le
137     journal des erreurs. La plupart d'entre eux sont similaires à l'exemple
138     ci-dessus. Le journal des erreurs peut aussi contenir des informations de
139     débogage en provenance de scripts CGI. Toute information qu'un script CGI
140     écrit sur la sortie d'erreurs standard <code>stderr</code> sera recopiée
141     telle quelle dans le journal des erreurs.</p>
142
143     <p>Il n'est pas possible de personnaliser le journal des erreurs en ajoutant ou en
144     supprimant des informations. Cependant, les entrées du journal des erreurs
145     qui concernent certaines requêtes possèdent des entrées correspondantes
146     dans le <a href="#accesslog">journal des accès</a>. Ainsi, l'entrée de
147     l'exemple ci-dessus correspond à une entrée du journal des accès avec un
148     code de statut 403. Etant donné qu'il est possible de personnaliser le
149     journal des accès, vous pouvez obtenir d'avantage d'informations sur les
150     circonstances d'une erreur en consultant ce journal.</p>
151
152     <p>Pendant la phase de test, il est souvent utile de visualiser en continu
153     le journal des erreurs afin de détecter tout problème éventuel. Sur les
154     systèmes de type Unix, ceci s'effectue à l'aide de la commande :</p>
155
156     <div class="example"><p><code>
157       tail -f error_log
158     </code></p></div>
159   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
160 <div class="section">
161 <h2><a name="accesslog" id="accesslog">Journal des accès</a></h2>
162     
163
164     <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>
165
166     <p>Le journal des accès au serveur
167     enregistre toutes les requêtes que traite
168     ce dernier. La localisation et le contenu du journal des accès sont définis
169     par la directive <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>.
170     La directive <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code>
171     permet de simplifier la sélection du contenu du journal. Cette section
172     décrit comment configurer le serveur pour l'enregistrement des informations
173     dans le journal des accès.</p>
174
175     <p>Bien évidemment, le stockage d'informations dans le journal des accès
176     n'est que le point de départ de la gestion de la journalisation. L'étape
177     suivante consiste à analyser ces informations de façon à pouvoir en
178     extraire des statistiques utiles. L'analyse de journaux en général est en
179     dehors du sujet de ce document et ne fait pas vraiment partie intégrante
180     du travail du serveur web lui-même. Pour plus d'informations à propos de ce
181     sujet et des applications dédiées à l'analyse de journaux, vous pouvez vous
182     référer à <a href="http://dmoz.org/Computers/Software/Internet/     Site_Management/Log_analysis/">Open Directory</a> ou
183     <a href="http://dir.yahoo.com/Computers_and_Internet/Software/     Internet/World_Wide_Web/Servers/Log_Analysis_Tools/">Yahoo</a>.</p>
184
185     <p>Différentes versions du démon Apache httpd utilisaient d'autres modules
186     et directives pour contrôler la journalisation des accès, à l'instar de
187     mod_log_referer, mod_log_agent, et de la directive
188     <code>TransferLog</code>. La directive
189     <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> rassemble
190     désormais les fonctionnalités de toutes les anciennes directives.</p>
191
192     <p>Le format du journal des accès est hautement configurable. Il est
193     défini à l'aide d'une chaîne de format qui ressemble sensiblement à la
194     chaîne de format de style langage C de printf(1). Vous trouverez quelques
195     exemples dans les sections suivantes. Pour une liste exhaustive de ce que
196     peut contenir une chaîne de format, vous pouvez vous référer au chapitre
197     <a href="mod/mod_log_config.html#formats">chaînes de format</a> de la
198     documentation du module <code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code>.</p>
199
200     <h3><a name="common" id="common">Format habituel du journal</a></h3>
201       
202
203       <p>Voici une configuration typique pour le journal des accès :</p>
204
205       <div class="example"><p><code>
206         LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common<br />
207          CustomLog logs/access_log common
208       </code></p></div>
209
210       <p>Ici est définie l'<em>identité</em> <code>common</code> qui est
211       ensuite associée à une chaîne de format de journalisation particulière.
212       La chaîne de format est constituée de directives débutant par le
213       caractère %, chacune d'entre elles indiquant au serveur d'enregistrer
214       un élément particulier d'information. Des caractères littéraux peuvent
215       aussi être insérés dans la chaîne de format ; il seront copiés tels
216       quels dans le flux de sortie destiné à la journalisation.
217       Les guillemets (<code>"</code>) doivent être échappées en les faisant
218       précéder d'un anti-slash (<code>\</code>) afin qu'elles ne soient pas
219       interprétées comme la fin de la chaîne de format. La chaîne de format
220       peut aussi contenir les caractères de contrôle spéciaux
221       "<code>\n</code>" et "<code>\t</code>" pour insérer respectivement
222       un passage à la ligne et une tabulation.</p>
223
224       <p>La directive <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>
225       définit un nouveau fichier journal en l'associant à l'identité
226       précédemment définie. Le chemin du nom de fichier associé au journal
227       des accès est relatif au chemin défini par la directive
228       <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code>, sauf s'il
229       débute par un slash.</p>
230
231       <p>La configuration ci-dessus va enregistrer les entrées de
232       journalisation selon un format connu sous le nom de
233       Common Log Format (CLF) pour "Format de journalisation standard".
234       Ce format standard peut être produit par de nombreux serveurs web
235       différents et lu par de nombreux programmes d'analyse de journaux.
236       Les entrées de fichier journal générées selon le format CLF
237       ressemblent à ceci :</p>
238
239       <div class="example"><p><code>
240         127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
241         /apache_pb.gif HTTP/1.0" 200 2326
242       </code></p></div>
243
244       <p>Chaque partie de cette entrée de journal est décrite
245       dans ce qui suit.</p>
246
247       <dl>
248         <dt><code>127.0.0.1</code> (<code>%h</code>)</dt>
249
250         <dd>Il s'agit de l'adresse IP du client (l'hôte distant) qui a envoyé
251         la requête au serveur. Si la directive
252         <code class="directive"><a href="./mod/core.html#hostnamelookups">HostnameLookups</a></code> est positionnée à
253         <code>On</code>, le serveur va essayer de déterminer le nom de l'hôte
254         et de l'enregistrer à la place de l'adresse IP. Cette configuration
255         n'est cependant pas recommandée car elle peut ralentir le serveur de
256         manière significative. Il est par conséquent préférable d'utiliser un
257         processeur d'analyse de journaux a posteriori
258         tel que <code class="program"><a href="./programs/logresolve.html">logresolve</a></code>
259         pour déterminer les noms d'hôte. L'adresse IP indiquée ici n'est pas
260         nécessairement l'adresse IP de la machine devant laquelle se trouve
261         l'utilisateur. Si un serveur mandataire s'intercale entre le serveur
262         et l'utilisateur, l'adresse indiquée sera celle du mandataire et non
263         celle de la machine à l'origine de la requête.</dd>
264
265         <dt><code>-</code> (<code>%l</code>)</dt>
266
267         <dd>Le "trait d'union" indique que la portion d'information
268         correspondante n'est pas disponible. Dans le cas présent, l'information
269         non disponible est l'identité (RFC 1413) du client telle que déterminée
270         par <code>identd</code> sur la machine cliente. Cette information est
271         très peu fiable et ne devrait jamais être utilisée, sauf dans le cas
272         de réseaux internes étroitement contrôlés. Le démon httpd ne cherchera
273         d'ailleurs à obtenir cette information que si la directive
274         <code class="directive"><a href="./mod/core.html#identitycheck">IdentityCheck</a></code> est positionnée
275         à <code>On</code>.</dd>
276
277         <dt><code>frank</code> (<code>%u</code>)</dt>
278
279         <dd>Il s'agit de l'identifiant utilisateur de la personne qui a
280         demandé le document, issu d'une authentification HTTP.
281         Ce même identifiant est en général fourni aux scripts CGI par
282         l'intermédiaire de la valeur de la variable d'environnement
283         <code>REMOTE_USER</code>. Si le statut de la requête (voir plus loin)
284         est 401, cette identifiant n'est pas fiable car l'utilisateur n'est
285         pas encore authentifié. Si le document n'est pas protégé par
286         mot de passe, cette partie d'information sera représentée par
287         "<code>-</code>", comme la partie précédente.</dd>
288
289         <dt><code>[10/Oct/2000:13:55:36 -0700]</code>
290         (<code>%t</code>)</dt>
291
292         <dd>
293           L'heure à laquelle la requête a été reçue.
294           Le format est le suivant :
295
296           <p class="indent">
297             <code>[jour/mois/année:heure:minutes:secondes zone]<br />
298              jour = 2*chiffre<br />
299              mois = 3*lettre<br />
300              année = 4*chiffre<br />
301              heure = 2*chiffre<br />
302              minutes = 2*chiffre<br />
303              secondes = 2*chiffre<br />
304              zone = (`+' | `-') 4*chiffre</code>
305           </p>Il est possible de modifier le format d'affichage de l'heure
306           en spécifiant <code>%{format}t</code> dans la chaîne de format du
307           journal, où <code>format</code> est une chaîne de format
308           de la forme de celle de la fonction <code>strftime(3)</code>
309           de la bibliothèque C standard, ou choisie parmi les
310           formats spéciaux supportés. Pour plus de détails,
311           reportez-vous aux. <a href="mod/mod_log_config.html#formats">chaînes de format</a>
312           de <code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code>.
313         </dd>
314
315         <dt><code>"GET /apache_pb.gif HTTP/1.0"</code>
316         (<code>\"%r\"</code>)</dt>
317
318         <dd>La ligne de la requête du client est placée entre guillemets.
319         Elle contient de nombreuses informations utiles. Tout d'abord, la
320         méthode utilisée par le client est <code>GET</code>. Ensuite, le
321         client a demandé la ressource <code>/apache_pb.gif</code>, et enfin,
322         le client a utilisé le protocole <code>HTTP/1.0</code>. Il est aussi
323         possible d'enregistrer séparément une ou plusieurs parties de la
324         requête. Par exemple, la chaîne de format "<code>%m %U %q %H</code>"
325         va enregistrer la méthode, le chemin, la chaîne de la requête et le
326         protocole, ce qui donnera le même résultat que
327         "<code>%r</code>".</dd>
328
329         <dt><code>200</code> (<code>%&gt;s</code>)</dt>
330
331         <dd>C'est le code de statut que le serveur retourne au client. Cette
332         information est très importante car elle indique si la requête a fait
333         l'objet d'une réponse positive (codes commençant par 2), une
334         redirection (codes commençant par 3), une erreur due au client (codes
335         commençant par 4), ou une erreur due au serveur (codes commençant
336         par 5). Vous trouverez la liste complète des codes de statut possibles
337         dans la <a href="http://www.w3.org/Protocols/rfc2616/  rfc2616.txt">specification HTTP</a> (RFC2616 section 10).</dd>
338
339         <dt><code>2326</code> (<code>%b</code>)</dt>
340
341         <dd>La dernière partie indique la taille de l'objet retourné au client,
342         en-têtes non compris. Si aucun contenu n'a été retourné au client, cette
343         partie contiendra "<code>-</code>". Pour indiquer l'absence de contenu
344         par "<code>0</code>", utilisez <code>%B</code> au lieu de
345         <code>%b</code>.</dd>
346       </dl>
347     
348
349     <h3><a name="combined" id="combined">Combined Log Format (Format de journalisation combiné)</a></h3>
350       
351
352       <p>Une autre chaîne de format couramment utilisée est le
353       "Combined Log Format" (Format de journalisation combiné). Il s'utilise
354       comme suit :</p>
355
356       <div class="example"><p><code>
357         LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\"
358         \"%{User-agent}i\"" combined<br />
359          CustomLog log/access_log combined
360       </code></p></div>
361
362       <p>Ce format est identique au Common Log Format, avec deux champs
363       supplémentaires. Chacun de ces deux champs utilise la directive
364       commençant par le caractère "%" <code>%{<em>header</em>}i</code>,
365       où <em>header</em> peut être n'importe quel en-tête de requête HTTP.
366       Avec ce format, le journal des accès se présentera comme suit :</p>
367
368       <div class="example"><p><code>
369         127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
370         /apache_pb.gif HTTP/1.0" 200 2326
371         "http://www.example.com/start.html" "Mozilla/4.08 [en]
372         (Win98; I ;Nav)"
373       </code></p></div>
374
375       <p>Les champs supplémentaires sont :</p>
376
377       <dl>
378         <dt><code>"http://www.example.com/start.html"</code>
379         (<code>\"%{Referer}i\"</code>)</dt>
380
381         <dd>L'en-tête "Referer" (sic) de la requête HTTP. Il indique le site
382         depuis lequel le client prétend avoir lancé sa requête. (Ce doit être
383         la page qui contient un lien vers <code>/apache_pb.gif</code> ou
384         inclut ce dernier fichier).</dd>
385
386         <dt><code>"Mozilla/4.08 [en] (Win98; I ;Nav)"</code>
387         (<code>\"%{User-agent}i\"</code>)</dt>
388
389         <dd>L'en-tête User-Agent de la requête HTTP. C'est une information
390         d'identification que le navigateur du client envoie à propos
391         de lui-même.</dd>
392       </dl>
393     
394
395     <h3><a name="multiple" id="multiple">Journaux d'accès multiples</a></h3>
396       
397
398       <p>Plusieurs journaux d'accès peuvent être créés en spécifiant tout
399       simplement plusieurs directives
400       <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> dans le
401       fichier de configuration. Par exemple, les directives suivantes vont
402       créer trois journaux d'accès. Le premier contiendra les informations
403       de base CLF, le second les informations du Referer, et le troisième
404       les informations sur le navigateur. Les deux dernières directives
405       <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> montrent
406       comment simuler les effets des directives <code>ReferLog</code> et
407       <code>AgentLog</code>.</p>
408
409       <div class="example"><p><code>
410         LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common<br />
411         CustomLog logs/access_log common<br />
412         CustomLog logs/referer_log "%{Referer}i -&gt; %U"<br />
413         CustomLog logs/agent_log "%{User-agent}i"
414       </code></p></div>
415
416       <p>Cet exemple montre aussi qu'il n'est pas obligatoire d'associer
417       une chaîne de format à un alias au moyen de la directive
418       <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code>. Elle peut
419       être définie directement dans la ligne de la directive
420       <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>.</p>
421     
422
423     <h3><a name="conditional" id="conditional">Journalisation conditionnelle</a></h3>
424       
425
426       <p>Il est parfois souhaitable d'exclure certaines entrées des journaux
427       d'accès en fonction des caractéristiques de la requête du client. On
428       peut aisément accomplir ceci à l'aide des
429       <a href="env.html">variables d'environnement</a>. Tout d'abord, une
430       variable d'environnement doit être définie pour indiquer que la
431       requête remplit certaines conditions. Pour ceci, on utilise en général
432       la directive <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>,
433       puis la clause <code>env=</code> de la directive
434       <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> pour inclure
435       ou exclure les requêtes pour lesquelles
436       la variable d'environnement est définie.
437       Quelques exemples :</p>
438
439       <div class="example"><p><code>
440         # Marque les requêtes en provenance de l'interface loop-back<br />
441         SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog<br />
442         # Marque les requêtes pour le fichier robots.txt<br />
443         SetEnvIf Request_URI "^/robots\.txt$" dontlog<br />
444         # Journalise toutes les autres requêtes<br />
445         CustomLog logs/access_log common env=!dontlog
446       </code></p></div>
447
448       <p>Autre exemple, imaginons l'enregistrement des requêtes en provenance
449       d'utilisateurs de langue anglaise dans un journal, et celles des autres
450       utilisateurs dans un autre journal.</p>
451
452       <div class="example"><p><code>
453         SetEnvIf Accept-Language "en" english<br />
454         CustomLog logs/english_log common env=english<br />
455         CustomLog logs/non_english_log common env=!english
456       </code></p></div>
457
458         <p>Dans le contexte d'une mise en cache, il peut être
459         intéressant de connaître l'efficacité du cache. Pour y parvenir,
460         on pourrait utiliser cette méthode simple :</p>
461
462       <div class="example"><p><code>
463         SetEnv CACHE_MISS 1<br />
464         LogFormat "%h %l %u %t "%r " %&gt;s %b %{CACHE_MISS}e" common-cache<br />
465         CustomLog logs/access_log common-cache
466       </code></p></div>
467
468       <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> va s'exécuter avant
469       <code class="module"><a href="./mod/mod_env.html">mod_env</a></code>, et si son action est couronnée de
470       succès, il délivrera le contenu sans faire appel à ce dernier. Si
471       l'URL se trouve dans le cache, la valeur journalisée sera alors
472       <code>-</code>, tandis que dans le cas contraire elle sera
473       <code>1</code>.</p>
474
475
476       <p>Bien que nous venions de montrer que la journalisation conditionnelle
477       est souple et très puissante, cette méthode de contrôle du contenu des
478       journaux n'est pas la seule. Les fichiers journaux sont plus utiles
479       quand ils contiennent un enregistrement complet de l'activité du serveur,
480       et il est souvent plus aisé de simplement traiter à posteriori les fichiers
481       journaux pour supprimer les requêtes que vous ne voulez pas y voir
482       apparaître.</p>
483     
484   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
485 <div class="section">
486 <h2><a name="rotation" id="rotation">Rotation des journaux</a></h2>
487     
488
489     <p>Même dans le cas d'un serveur modérément sollicité, la quantité
490     d'informations stockées dans les fichiers journaux est très importante.
491     Le fichier journal des accès grossit en général d'1 Mo ou plus toutes
492     les 10000 requêtes. Il est par conséquent nécessaire d'effectuer
493     périodiquement la rotation des journaux en déplaçant ou supprimant les
494     fichiers correspondants. On ne peut pas le faire pendant que le serveur
495     est en cours d'exécution, car Apache httpd va continuer à écrire dans l'ancien
496     fichier journal aussi longtemps qu'il le maintiendra ouvert.
497     C'est pourquoi le serveur doit être
498     <a href="stopping.html">redémarré</a> après le déplacement ou la
499     suppression des fichiers journaux de façon à ce qu'il en ouvre
500     de nouveaux.</p>
501
502     <p>Avec un redémarrage <em>graceful</em>, on peut faire en sorte que le
503     serveur ouvre de nouveaux fichiers journaux sans perdre de connexions
504     existantes ou en cours avec les clients. Cependant, pour que ceci soit
505     possible, le serveur doit continuer à écrire dans les anciens fichiers
506     journaux pendant qu'il termine le traitement des requêtes en cours.
507     Il est donc nécessaire d'attendre un certain temps après le rédémarrage
508     avant d'effectuer tout traitement sur les fichiers journaux. Voici un
509     scénario typique dans lequel on effectue une simple rotation des
510     journaux en compressant les anciens fichiers correspondants afin
511     de gagner de l'espace disque :</p>
512
513     <div class="example"><p><code>
514       mv access_log access_log.old<br />
515       mv error_log error_log.old<br />
516       apachectl graceful<br />
517       sleep 600<br />
518       gzip access_log.old error_log.old
519     </code></p></div>
520
521     <p>La section suivante présente une autre méthode de rotation des journaux
522     qui consiste à utiliser les
523     <a href="#piped">journaux redirigés</a>.</p>
524   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
525 <div class="section">
526 <h2><a name="piped" id="piped">Journaux redirigés</a></h2>
527     
528
529     <p>Nous avons vu que le démon httpd écrivait les informations de
530     journalisation des erreurs et des accès dans un fichier journal ;
531     il peut aussi
532     rediriger ces informations vers un autre processus par l'intermédiaire d'un
533     tube de communication (pipe). Cette fonctionnalité améliore
534     considérablement la souplesse de la journalisation, sans ajouter de code
535     au serveur principal. Pour rediriger les informations de journalisation
536     vers un tube de communication, remplacez simplement le nom de fichier
537     journal par
538     le caractère pipe "<code>|</code>", suivi du nom de l'exécutable qui va
539     recueillir les entrées de journal sur son entrée
540     standard. Le serveur va
541     lancer le processus de redirection des journaux au moment du démarrage du
542     serveur, et le relancera s'il cesse de fonctionner
543     pendant l'exécution du serveur.
544     (Nous dénommons cette technique "journalisation
545     redirigée fiable" grâce à cette dernière fonctionnalité.)</p>
546
547     <p>Les processus de journalisation redirigée sont lancés par le processus
548     httpd parent, et héritent de l'UID de ce dernier. Cela signifie que les
549     programmes de journalisation dirigée s'exécutent généralement en tant que
550     root. Il est donc très important que ces programmes soient simples et
551     sécurisés.</p>
552
553     <p>Un des grands avantages de la journalisation redirigée est la possibilité
554     d'effectuer la rotation des journaux sans avoir à redémarrer le serveur. Pour
555     accomplir cette tâche, le serveur HTTP Apache fournit un programme simple
556     appelé <code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code>. Par exemple, pour une rotation des
557     journaux toutes les 24 heures, ajoutez ces lignes :</p>
558
559     <div class="example"><p><code>
560       CustomLog "|/usr/local/apache/bin/rotatelogs
561       /var/log/access_log 86400" common
562     </code></p></div>
563
564     <p>Notez que l'ensemble de la commande qui sera appelée par le tube de
565     communication a été placée entre guillemets. Bien que cet exemple
566     concerne le journal des accès, la même technique peut être utilisée
567     pour le journal des erreurs.</p>
568
569     <p>Il existe un autre programme de rotation des journaux similaire mais
570     beaucoup plus souple : il s'agit de "cronolog", non fourni par Apache,
571     mais disponible <a href="http://www.cronolog.org/">ici</a>.</p>
572
573     <p>Comme la journalisation conditionnelle, la journalisation redirigée est
574     un outil très puissant, mais si elle existe, il est préférable d'utiliser
575     une solution plus simple comme le traitement à posteriori hors ligne.</p>
576   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
577 <div class="section">
578 <h2><a name="virtualhost" id="virtualhost">Hôtes virtuels</a></h2>
579     
580
581     <p>Lorsqu'un serveur possède plusieurs <a href="vhosts/">hôtes virtuels</a>, il existe de nombreuses solutions pour gérer
582     les fichiers journaux. Par exemple, on peut utiliser les journaux comme
583     s'il s'agissait d'un serveur avec un seul hôte. Il suffit pour cela de
584     placer les directives de journalisation en dehors des sections
585     <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> au niveau
586     du serveur principal, ce qui a pour effet de journaliser toutes les
587     requêtes dans le même journal des accès et des erreurs. Cette technique
588     est cependant inappropriée pour recueillir des statistiques sur chaque
589     hôte virtuel individuellement.</p>
590
591     <p>Si des directives <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> ou
592     <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> sont placées dans une section
593     <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>, toutes les
594     requêtes ou erreurs pour cet hôte virtuel ne seront enregistrées que dans
595     le fichier spécifié. Tout hôte virtuel qui ne possède pas de directives de
596     journalisation verra ses requêtes enregistrées dans le journal du serveur
597     principal. Cette technique est appropriée pour un petit nombre d'hôtes
598     virtuels, mais si ce nombre est important, elle peut devenir compliquée à
599     gérer. En outre, des problèmes de <a href="vhosts/fd-limits.html">nombre de descripteurs
600     de fichiers insuffisant</a> peuvent rapidement apparaître.</p>
601
602     <p>Il existe un très bon compromis pour le journal des accès. En intégrant
603     les informations à propos de l'hôte virtuel à la chaîne de format du
604     journal, il est possible de journaliser tous les hôtes dans le même
605     journal, puis de séparer ultérieurement le journal en plusieurs journaux
606     individuels. Considérons par exemple les directives suivantes :</p>
607
608     <div class="example"><p><code>
609       LogFormat "%v %l %u %t \"%r\" %&gt;s %b"
610       comonvhost<br />
611       CustomLog logs/access_log comonvhost
612     </code></p></div>
613
614     <p>Le champ <code>%v</code> sert à enregistrer le nom de l'hôte virtuel qui
615     traite la requête. Un programme tel que <a href="programs/other.html">split-logfile</a> peut ensuite être utilisé
616     pour générer "à froid" autant de journaux que d'hôtes virtuels.</p>
617   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
618 <div class="section">
619 <h2><a name="other" id="other">Autres fichiers journaux</a></h2>
620     
621
622     <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>
623
624     <h3>Enregistrement du nombre réel d'octets envoyés et reçus</h3>
625       
626
627       <p>Le module <code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code> fournit deux champs
628       <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> supplémentaires
629       (%I et %O) qui permettent d'enregistrer le nombre réel d'octets reçus et
630       envoyés sur le réseau.</p>
631     
632
633     <h3>Journalisation de style investigation judiciaire (forensic logging)</h3>
634       
635
636       <p>Le module <code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code> permet la journalisation
637       à des fins d'investigation judiciaire des requêtes des clients. La
638       journalisation est effectuée avant et après le traitement de la requête,
639       qui fait donc l'objet de deux entrées dans le journal. Le générateur de
640       journaux d'investigation est très strict et ne permet aucune
641       personnalisation. C'est un inestimable outil de débogage et de sécurité.</p>
642     
643
644     <h3><a name="pidfile" id="pidfile">Fichier PID</a></h3>
645       
646
647       <p>Au démarrage, le démon httpd Apache enregistre l'identifiant du
648       processus httpd parent dans le fichier <code>logs/httpd.pid</code>.
649       Le nom de ce fichier peut être modifié à l'aide de la directive
650       <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code>. Cet identifiant
651       permet à l'administrateur de redémarrer et arrêter le démon en
652       envoyant des signaux au processus parent ; sous Windows, vous devez
653       utiliser l'option de ligne de commande -k. Pour plus de détails,
654       consulter la page <a href="stopping.html">Arrêt et redémarrage</a>.</p>
655     
656
657     <h3><a name="scriptlog" id="scriptlog">Journal des scripts</a></h3>
658       
659
660       <p>Afin de faciliter le débogage, la directive
661       <code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code> vous permet
662       d'enregistrer les entrées et sorties des scripts CGI. Elle ne doit être
663       utilisée que pendant la phase de test, et en aucun cas sur un
664       serveur en production. Vous trouverez plus d'informations dans la
665       documentation du module <a href="mod/mod_cgi.html">mod_cgi</a>.</p>
666     
667
668     <h3><a name="rewritelog" id="rewritelog">Journal de réécriture</a></h3>
669       
670
671       <p>Lorsqu'on utilise les fonctionnalités puissantes et complexes du
672       module <a href="mod/mod_rewrite.html">mod_rewrite</a>, il est presque
673       toujours nécessaire d'utiliser la directive
674       <code class="directive"><a href="./mod/mod_rewrite.html#rewritelog">RewriteLog</a></code> afin de
675       faciliter le débogage. Ce fichier journal fournit une analyse détaillée
676       de la transformation des requêtes par le moteur de réécriture. Le niveau
677       de détail est contrôlé par la directive
678       <code class="directive"><a href="./mod/mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></code>.</p>
679     
680   </div></div>
681 <div class="bottomlang">
682 <p><span>Langues Disponibles: </span><a href="./en/logs.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
683 <a href="./fr/logs.html" title="Français">&nbsp;fr&nbsp;</a> |
684 <a href="./ja/logs.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
685 <a href="./ko/logs.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
686 <a href="./tr/logs.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
687 </div><div id="footer">
688 <p class="apache">Copyright 2010 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
689 <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>
690 </body></html>