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