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