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