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