1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>mod_log_config - Serveur HTTP Apache Version 2.5</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<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" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<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>
<p class="apache">Serveur HTTP Apache Version 2.5</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_log_config</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_log_config.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mod_log_config.html" title="Français"> fr </a> |
<a href="../ja/mod/mod_log_config.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/mod/mod_log_config.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="../tr/mod/mod_log_config.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Journalisation des requêtes envoyées au
serveur</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>log_config_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_log_config.c</td></tr></table>
<h3>Sommaire</h3>
<p>Ce module apporte une grande souplesse dans la journalisation des
requêtes des clients. Les journaux sont écrits sous un format
personnalisable, et peuvent être enregistrés directement dans un
fichier, ou redirigés vers un programme externe. La journalisation
conditionnelle est supportée, si bien que des requêtes individuelles
peuvent être incluses ou exclues des journaux en fonction de leur
caractéristiques.</p>
<p>Ce module fournit trois directives : <code class="directive"><a href="#transferlog">TransferLog</a></code> crée un fichier
journal, <code class="directive"><a href="#logformat">LogFormat</a></code>
définit un format personnalisé, et <code class="directive"><a href="#customlog">CustomLog</a></code> définit un fichier journal et un format en
une seule étape. Pour journaliser les requêtes dans plusieurs
fichiers, vous pouvez utiliser plusieurs fois les directives
<code class="directive">TransferLog</code> et
<code class="directive">CustomLog</code> dans chaque serveur.</p>
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#formats">Formats de journaux personnalisés</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#security">Considérations concernant la
sécurité</a></li>
</ul><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#bufferedlogs">BufferedLogs</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#customlog">CustomLog</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#globallog">GlobalLog</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#logformat">LogFormat</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#transferlog">TransferLog</a></li>
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_log_config">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_log_config">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
<li><a href="../logs.html">Les fichiers journaux
d'Apache</a></li>
<li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="formats" id="formats">Formats de journaux personnalisés</a> <a title="Lien permanent" href="#formats" class="permalink">¶</a></h2>
<p>L'argument format des directives <code class="directive"><a href="#logformat">LogFormat</a></code> et <code class="directive"><a href="#customlog">CustomLog</a></code> est une chaîne de
caractères. Cette chaîne définit le format de la journalisation des
requêtes dans le fichier journal. Elle peut contenir des caractères
littéraux qui seront reproduits dans le fichier journal, et les
caractères de contrôle de style C "\n" et "\t" représentant
respectivement une nouvelle ligne et une tabulation. Les guillemets
et les anti-slashes littéraux doivent être échappés à l'aide
d'anti-slashes.</p>
<p>Les caractéristiques de la requête en elle-même sont journalisées
en insérant des directives "<code>%</code>" dans la chaîne de
format, celles-ci étant remplacées dans le fichier journal par
certaines valeurs comme suit :</p>
<table class="bordered"><tr class="header"><th>Chaîne de format</th>
<th>Description</th></tr>
<tr><td><code>%%</code></td>
<td>Le signe "pourcentage"</td></tr>
<tr class="odd"><td><code>%a</code></td>
<td>L'adresse IP distante (voir le module
<code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code>).</td></tr>
<tr><td><code>%{c}a</code></td>
<td>Adresse IP distante de la connexion(voir le module
<code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code>)</td></tr>
<tr class="odd"><td><code>%A</code></td>
<td>L'adresse IP locale</td></tr>
<tr><td><code>%B</code></td>
<td>La taille de la réponse en octets, en excluant les en-têtes
HTTP.</td></tr>
<tr class="odd"><td><code>%b</code></td>
<td>La taille de la réponse en octets, en excluant les en-têtes
HTTP. Au format CLF , c'est à dire un '<code>-</code>' à la
place d'un 0 lorsqu'aucun octet n'est renvoyé.</td></tr>
<tr><td><code>%{<var>NOMVAR</var>}C</code></td>
<td>Le contenu du cookie <var>NOMVAR</var> dans la requête
envoyée au serveur. Seuls les cookies version 0 sont pleinement
supportés.</td></tr>
<tr class="odd"><td><code>%D</code></td>
<td>Le temps mis à servir la requête, en
microsecondes. Voir %T pour plus de détails</td></tr>
<tr><td><code>%{<var>NOMVAR</var>}e</code></td>
<td>Le contenu de la variable d'environnement
<var>NOMVAR</var></td></tr>
<tr class="odd"><td><code>%f</code></td>
<td>Nom de fichier</td></tr>
<tr><td><code>%h</code></td>
<td>Serveur distant. Contiendra l'adresse IP si la directive
<code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code> est définie
à <code>Off</code>, ce qui est sa valeur par défaut. Si cette
adresse IP n'est enregistrée que pour certains serveurs, vous
avez probablement défini des directives de contrôle d'accès qui
mentionnent ces derniers par leurs noms. Voir la <a href="mod_authz_host.html#reqhost">documentation de Require
host</a>. Ce format peut être impacté par la modifications
du nom d'hote distant par des modules comme <code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code>.</td></tr>
<tr class="odd"><td><code>%{c}h</code></td>
<td>Semblable à <code>%h</code>, mais exploite toujours le nom d'hôte de la connection
TCP sous-jacente, en ignorant toute modification réalisée sur le nom d'hôte distant
par des modules tels que <code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code>.</td></tr>
<tr><td><code>%H</code></td>
<td>Le protocole de la requête</td></tr>
<tr class="odd"><td><code>%{<var>NOMVAR</var>}i</code></td>
<td>Le contenu des lignes d'en-tête
<code><var>NOMVAR</var>:</code> dans la requête envoyée au
serveur. Ces en-têtes sont ajoutés par d'autres modules (par
exemple <code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code>). Si vous êtes intéressé
par ce qu'était l'en-tête de la requête avant d'être modifié
par la plupart des modules, utilisez
<code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> pour copier l'en-tête dans une
variable d'environnement interne et journaliser sa valeur via
le champ <code>%{<var>VARNAME</var>}e</code> décrit plus haut.
</td></tr>
<tr><td><code>%k</code></td>
<td>Nombre de requêtes persistantes en cours pour cette
connexion. Interessant si la directive <code class="directive"><a href="../mod/core.html#keepalive">KeepAlive</a></code> est utilisée ; par exemple,
'1' signifie la première requête après la requête initiale, '2'
la seconde, etc... ; autrement, il s'agit toujours de 0
(indiquant la requête initiale).</td></tr>
<tr class="odd"><td><code>%l</code></td>
<td>Le nom de connexion distant (en provenance d'identd, si
disponible). Affiche un tiret, sauf si
<code class="module"><a href="../mod/mod_ident.html">mod_ident</a></code> est présent et si <code class="directive"><a href="../mod/mod_ident.html#identitycheck">IdentityCheck</a></code> est à
<code>On</code>.</td></tr>
<tr><td><code>%L</code></td>
<td>L'identifiant du message de journalisation de la requête
dans le journal des erreurs (ou '-' si aucun message n'a
été enregistré dans le journal des erreurs pour cette requête).
Consulter le journal d'erreurs pour voir quelle requête a généré
quelle erreur.</td></tr>
<tr class="odd"><td><code>%{c}L</code></td>
<td>L'identifiant du message de journalisation de la connexion
dans le journal des erreurs (ou '-' si aucun message n'a
été enregistré dans le journal des erreurs pour cette requête).
Consulter le journal d'erreurs pour voir quelle requête a généré
quelle erreur.</td></tr>
<tr><td><code>%m</code></td>
<td>La méthode de la requête</td></tr>
<tr class="odd"><td><code>%{<var>NOMVAR</var>}n</code></td>
<td>Le contenu de la note <var>NOMVAR</var> en provenance d'un
autre module.</td></tr>
<tr><td><code>%{<var>NOMVAR</var>}o</code></td>
<td>Le contenu de la ligne d'en-tête
<code><var>NOMVAR</var>:</code> de la réponse.</td></tr>
<tr class="odd"><td><code>%p</code></td>
<td>Le port canonique du serveur servant la requête</td></tr>
<tr><td><code>%{<var>format</var>}p</code></td>
<td>Le port canonique du serveur servant la requête ou le
véritable port du serveur ou le véritable port du client. les
formats valides sont <code>canonical</code>, <code>local</code>,
ou <code>remote</code>.
</td></tr>
<tr class="odd"><td><code>%P</code></td>
<td>Le numéro de processus du processus enfant qui a servi la
requête.</td></tr>
<tr><td><code>%{<var>format</var>}P</code></td>
<td>Le numéro de processus ou le numéro de thread du processus
enfant qui a servi la requête. Les formats valides sont
<code>pid</code>, <code>tid</code>, et <code>hextid</code>.
<code>hextid</code> nécessite APR version 1.2.0 ou supérieure.
</td></tr>
<tr class="odd"><td><code>%q</code></td>
<td>La chaîne d'arguments (préfixée par un <code>?</code> si une
chaîne d'arguments existe, sinon une chaîne vide)</td></tr>
<tr><td><code>%r</code></td>
<td>La première ligne de la requête</td></tr>
<tr class="odd"><td><code>%R</code></td>
<td>Le gestionnaire qui génère la réponse (s'il y en a un).</td></tr>
<tr><td><code>%s</code></td>
<td>Statut. Pour les requêtes redirigées en interne, il s'agit
du statut de la requête *originale* --- <code>%>s</code> pour
la dernière.</td></tr>
<tr class="odd"><td><code>%t</code></td>
<td>Date à laquelle la requête a été reçue (au format anglais
standard)</td></tr>
<tr><td><code>%{<var>format</var>}t</code></td>
<td>La date, sous la forme spécifiée par format, qui devrait
être au format étendu <code>strftime(3)</code> (éventuellement
localisé). Si le format commence par <code>begin:</code> (valeur
par défaut), la date est extraite au début du traitement de la
requête ; s'il commence par <code>end:</code>, la date
correspond au moment où l'entrée du journal est inscrite, par
conséquent vers la fin du traitement de la requête. Hormis les
formats supportés par <code>strftime(3)</code>, les formats
suivants sont aussi disponibles :
<table>
<tr><td><code>sec</code></td><td>nombre de secondes depuis Epoch</td></tr>
<tr><td><code>msec</code></td><td>nombre de millisecondes depuis Epoch</td></tr>
<tr><td><code>usec</code></td><td>nombre de microsecondes depuis Epoch</td></tr>
<tr><td><code>msec_frac</code></td><td>fraction de milliseconde</td></tr>
<tr><td><code>usec_frac</code></td><td>fraction de microseconde</td></tr>
</table>
Ces symboles ne peuvent pas être combinés entre eux ou avec un
formatage <code>strftime(3)</code> dans la même chaîne de
format. Par contre, vous pouvez utiliser plusieurs symboles
<code>%{<var>format</var>}t</code>.</td></tr>
<tr class="odd"><td><code>%T</code></td>
<td><p>Le temps mis pour servir la requête, en secondes.
Le temps commence à être mesuré au moment où la première ligne de la requête HTTP
est transmise par le système d'exploitation au serveur HTTP, et se termine au moment
où le dernier octet de la réponse est envoyé au système d'exploitation par le serveur HTTP.</p>
<p> Le temps mesuré n'inclut donc <em>aucune</em> des rubriques suivantes :</p>
<ul>
<li> Temps passé dans les échanges TCP ou TLS.</li>
<li> Temps écoulé avant qu'un thread du serveur web ne réussisse à lire la première ligne
de la requête.</li>
<li> Retards pris par le système d'exploitation pour renvoyer la réponse sur le réseau.</li>
<li> Temps pris par la réponse pour arriver au système d'exploitation du client.</li>
<li> Temps pris par le client pour lire et traiter la réponse.</li>
</ul>
</td></tr>
<tr><td><code>%{<var>UNIT</var>}T</code></td>
<td>Le temps mis pour traiter la requête dans une unité définie
par <code>UNIT</code>. Les valeurs d'unité valides sont
<code>ms</code> pour millisecondes, <code>us</code> pour
microsecondes et <code>s</code> pour secondes. Si
<code>UNIT</code> est omis, la valeur de l'unité par défaut est
la seconde ; spécifier la valeur d'unité <code>us</code> revient
à utiliser le format <code>%D</code>. La possibilité de
spécifier une valeur d'unité avec le format <code>%T</code> est
disponible depuis la version 2.4.13 du serveur HTTP Apache.</td></tr>
<tr class="odd"><td><code>%u</code></td>
<td>L'utilisateur distant (en provenance d'auth ; peut être faux
si le statut de retour (<code>%s</code>) est 401).</td></tr>
<tr><td><code>%U</code></td>
<td>Le chemin de la requête, à l'exclusion de toute chaîne
d'arguments.</td></tr>
<tr class="odd"><td><code>%v</code></td>
<td>Le nom canonique du serveur qui a servi la requête, défini
par la directive <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>.</td></tr>
<tr><td><code>%V</code></td>
<td>La nom du serveur en tenant compte de la définition de la
directive <code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code>.</td></tr>
<tr class="odd"><td><code>%X</code></td>
<td>Statut de la connexion lorsque la réponse a été renvoyée
:
<table>
<tr><td><code>X</code> =</td>
<td>connexion abandonnée avant l'envoi de la réponse.</td></tr>
<tr><td><code>+</code> =</td>
<td>la connexion peut rester ouverte après l'envoi de la
réponse.</td></tr>
<tr><td><code>-</code> = </td>
<td>la connexion sera fermée après l'envoi de la
réponse.</td></tr>
</table>
</td></tr>
<tr><td><code>%I</code></td>
<td>Le nombre d'octets reçus, en comptant la requête et les
en-têtes, ne peut être nul. Nécessite l'activation de
<code class="module"><a href="../mod/mod_logio.html">mod_logio</a></code>.</td></tr>
<tr class="odd"><td><code>%O</code></td>
<td>Nombre d'octets envoyés, y compris les en-têtes. Peut être
nul dans les rares cas où une requête est avortée avant que la
réponse ne soit envoyée. Nécessite l'activation de
<code class="module"><a href="../mod/mod_logio.html">mod_logio</a></code>.</td></tr>
<tr><td><code>%S</code></td>
<td>Nombre d'octets transmis en émission et réception y compris
la requête et les en-têtes ; cette valeur ne peut pas être
nulle, il s'agit de la combinaison de %I et %O. Vous devez
activer <code class="module"><a href="../mod/mod_logio.html">mod_logio</a></code> pour utiliser cette chaîne de
format.</td></tr>
<tr class="odd"><td><code>%{<var>VARNAME</var>}^ti</code></td>
<td>Le contenu de la variable <code><var>VARNAME</var>:</code>
spécifiée dans la requête envoyée au serveur.</td></tr>
<tr><td><code>%{<var>VARNAME</var>}^to</code></td>
<td>Le contenu de la variable <code><var>VARNAME</var>:</code>
spécifiée dans la réponse envoyée par le serveur.</td></tr>
</table>
<h3><a name="modifiers" id="modifiers">Modificateurs</a></h3>
<p>Il est possible de restreindre l'enregistrement de certains
éléments
en fonction du code de statut de la réponse, en insérant une liste
de codes de statut séparés par des virgules immédiatement après le
caractère "%". Par exemple, <code>"%400,501{User-agent}i"</code>
n'enregistrera l'en-tête <code>User-agent</code> que dans le cas
d'une erreur 400 ou 501. Avec les autres codes de statut, c'est la
chaîne littérale <code>"-"</code> qui sera enregistrée. La liste
de codes peut être précédée d'un "<code>!</code>" pour inverser la
condition : <code>"%!200,304,302{Referer}i"</code> enregistre
l'en-tête <code>Referer</code> pour toutes les requêtes qui
<em>ne</em> renvoient <em>pas</em> un des trois codes spécifiés.</p>
<p>Les modificateurs "<" et ">" peuvent être utilisés pour
les requêtes qui ont été redirigées en interne afin de choisir si
c'est respectivement la requête originale ou finale qui doit être
consultée. Par défaut, les directives <code>%s, %U, %T, %D,</code>
et <code>%r</code> consultent la requête originale, alors que
toutes les autres consultent la requête finale. Ainsi, par
exemple, on peut utiliser <code>%>s</code> pour enregistrer le
statut final de la requête, et <code>%<u</code> pour
enregistrer l'utilisateur authentifié à l'origine pour une requête
redirigée en interne vers une ressource sans authentification.</p>
<h3><a name="format-notes" id="format-notes">Quelques Notes</a></h3>
<p>Pour des raisons de sécurité, à partir de la version 2.0.46,
les caractères non imprimables et autres caractères spéciaux dans
les directives <code>%r</code>, <code>%i</code> et <code>%o</code>
doivent être échappés à l'aide des séquences
<code>\x<var>hh</var></code>,
où <var>hh</var> est le code hexadécimal du caractère spécial.
Comme exceptions à cette règle, les caractères <code>"</code> et
<code>\</code> doivent être échappés par un anti-slash, et tous
les "blancs" doivent être écrits selon leur notation de style C
(<code>\n</code>, <code>\t</code>, etc...). Avant la version
2.0.46, aucun échappement n'était effectué sur ces chaînes, et il
fallait être très prudent lors de l'exploitation des journaux
bruts.</p>
<p>A la différence de la version 1.3, depuis httpd 2.0, les chaînes
de format <code>%b</code> et <code>%B</code> ne représentent pas
le nombre d'octets envoyés au client, mais simplement la taille en
octets de la réponse HTTP (les deux étant différents, par exemple,
si la connexion est abandonnée, ou si SSL est utilisé). Le format
<code>%O</code> fourni par <code class="module"><a href="../mod/mod_logio.html">mod_logio</a></code>,
enregistrera le nombre réel d'octets envoyés sur le réseau.</p>
<p>Note : <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> est implémenté en tant que
gestionnaire basique et non en tant que gestionnaire standard.
C'est pourquoi la chaîne de format <code>%R</code> ne renverra pas
d'information à propos du gestionnaire lorsqu'une mise en cache de
contenu entre en jeu.</p>
<div class="note">
<p>Note : la présence du caractère '^' au début d'une chaîne de
format de trois caractères n'a aucune incidence sur la
signification de cette chaîne, mais il doit être
le premier caractère de toute chaîne de format de trois caractères
nouvellement créée, afin d'éviter d'éventuels conflits avec des
chaînes de format qui utilisent des caractères littéraux adjacents à un
spécificateur de format tel que "%Dus".</p>
</div>
<h3><a name="examples" id="examples">Exemples</a></h3>
<p>Quelques chaînes de format couramment utilisées :</p>
<dl>
<dt>Format de journal courant (CLF)</dt>
<dd><code>"%h %l %u %t \"%r\" %>s %b"</code></dd>
<dt>Format de journal courant avec un serveur virtuel</dt>
<dd><code>"%v %h %l %u %t \"%r\" %>s %b"</code></dd>
<dt>Format de journal NCSA étandu/combiné</dt>
<dd><code>"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
\"%{User-agent}i\""</code></dd>
<dt>Format de journal de la page qui contient le lien vers la
page concernée (Referer)</dt>
<dd><code>"%{Referer}i -> %U"</code></dd>
<dt>Format de journal de l'agent (Navigateur)</dt>
<dd><code>"%{User-agent}i"</code></dd>
</dl>
<p>Vous pouvez utiliser plusieurs fois la directive
<code>%{format}t</code> pour construire un format de temps
utilisant les symboles de format étendus tels que
<code>msec_frac</code> :</p>
<dl>
<dt>Format de temps prenant en compte les milisecondes</dt>
<dd><code>"%{%d/%b/%Y %T}t.%{msec_frac}t %{%z}t"</code></dd>
</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">Considérations concernant la
sécurité</a> <a title="Lien permanent" href="#security" class="permalink">¶</a></h2>
<p>Voir le document <a href="../misc/security_tips.html#serverroot">conseils à matière de
sécurité</a> pour plus de détails sur les raisons pour lesquelles
votre sécurité pourrait être compromise, si le répertoire où sont
stockés les fichiers journaux sont inscriptibles par tout autre
utilisateur que celui qui démarre le serveur.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="bufferedlogs" id="bufferedlogs">Directive</a> <a name="BufferedLogs" id="BufferedLogs">BufferedLogs</a> <a title="Lien permanent" href="#bufferedlogs" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enregistre les entrées du journal dans un tampon en mémoire
avant de les écrire sur disque</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>BufferedLogs On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>BufferedLogs Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_log_config</td></tr>
</table>
<p>Lorsque la directive <code class="directive">BufferedLogs</code> est à
"on", <code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code> stocke de nombreuses entrées
du journal en mémoire, et les écrit d'un seul bloc sur disque,
plutôt que de les écrire après chaque requête. Sur certains
systèmes, ceci peut améliorer l'efficacité des accès disque, et par
conséquent les performances. La directive ne peut être définie
qu'une seule fois pour l'ensemble du serveur ; elle ne peut pas être
définie au niveau d'un serveur virtuel.</p>
<div class="note">Cette directive doit être utilisée avec
précautions car un crash peut provoquer la perte de données de
journalisation.</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="customlog" id="customlog">Directive</a> <a name="CustomLog" id="CustomLog">CustomLog</a> <a title="Lien permanent" href="#customlog" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit le nom et le format du fichier
journal</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CustomLog <var>fichier</var>|<var>pipe</var>|<var>provider</var>
<var>format</var>|<var>alias</var>
[env=[!]<var>variable-environnement</var>|
expr=<var>expression</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_log_config</td></tr>
</table>
<p>La directive <code class="directive">CustomLog</code> permet de contrôler
la journalisation des requêtes destinées au serveur. Un format de
journal est spécifié, et la journalisation peut s'effectuer de
manière conditionnelle en fonction des caractéristiques de la
requête en utilisant des variables d'environnement.</p>
<p>Le premier argument, qui spécifie l'emplacement où les journaux
seront écrits, accepte deux types de valeurs :</p>
<dl>
<dt><var>fichier</var></dt>
<dd>Un nom de fichier, relatif au répertoire défini par la
directive <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>.</dd>
<dt><var>pipe</var></dt>
<dd>Le caractère pipe "<code>|</code>", suivi du chemin vers un
programme qui recevra les informations de la journalisation sur
son entrée standard. Voir les notes à propos de la <a href="../logs.html#piped">journalisation redirigée</a> pour plus
d'informations.
<div class="warning"><h3>Sécurité :</h3>
<p>Si les journaux sont redirigés vers un programme, ce dernier
s'exécutera sous l'utilisateur qui a démarré
<code class="program"><a href="../programs/httpd.html">httpd</a></code>. Ce sera l'utilisateur root si le serveur
a été démarré par root ; vérifiez que le programme est
sécurisé.</p>
</div>
<div class="warning"><h3>Note</h3>
<p>Lors de la spécification d'un chemin de fichier sur les
plate-formes non-Unix, il faut prendre soin de ne pas oublier
que seuls les slashes directs doivent être utilisés, même si la
plate-forme autorise l'emploi d'anti-slashes. D'une manière
générale, c'est une bonne idée que de n'utiliser que des slashes
directs dans les fichiers de configuration.</p>
</div></dd>
<dt><var>provider</var></dt>
<dd>Les messages CustomLog peuvent aussi utiliser comme cible les
modules qui implémentent des fournisseurs ErrorLog. A cet effet,
utilisez la syntaxe "provider:argument". Comme fournisseur, vous
pouvez par exemple utiliser <code class="module"><a href="../mod/mod_journald.html">mod_journald</a></code> ou
<code class="module"><a href="../mod/mod_syslog.html">mod_syslog</a></code> :
<pre class="prettyprint lang-config"># Journalisation CustomLog vers journald
CustomLog "journald" "%h %l %u %t \"%r\" %>s %b"
# Journalisation CustomLog vers syslog avec l'option "user"
CustomLog "syslog:user" "%h %l %u %t \"%r\" %>s %b"</pre>
</dd>
</dl>
<p>Le second argument permet de définir ce qui va être écrit dans le
fichier journal. Il peut contenir soit un <var>alias</var> prédéfini
par une directive <code class="directive"><a href="#logformat">LogFormat</a></code>, soit une chaîne de
<var>format</var> explicite comme décrit dans la section <a href="#formats">formats de journaux</a>.</p>
<p>Par exemple, les deux blocs de directives suivants produisent le
même effet :</p>
<pre class="prettyprint lang-config"># Journal personnalisé avec alias de format
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog "logs/access_log" common
# Journal personnalisé avec chaîne de format explicite
CustomLog "logs/access_log" "%h %l %u %t \"%r\" %>s %b"</pre>
<p>Le troisième argument est optionnel et permet de contrôler si une
requête doit être ou non journalisée. Dans le cas d'une clause
'<code>env=!<var>nom</var></code>', la condition peut être la
présence ou l'absence d'une variable particulière dans
l'<a href="../env.html">environnement du serveur</a>. Dans le cas
d'une clause 'expr=<var>expression</var>', la condition consiste
en une <a href="../expr.html">expression</a> booléenne
quelconque. Si la condition n'est pas vérifiée, la requête ne sera
pas journalisée. D'éventuelles références à des en-têtes HTTP dans
l'expression rationnelle n'entraîneront pas l'ajout des noms
d'en-tête correspondants à l'en-tête Vary.</p>
<p>Les variables d'environnement peuvent être définies au niveau de
chaque requête en utilisant les modules
<code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> et/ou <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.
Par exemple, si vous voulez enregistrer les requêtes pour toutes les
images GIF sur votre serveur dans un fichier journal séparé, et pas
dans votre journal principal, vous pouvez utiliser :</p>
<pre class="prettyprint lang-config">SetEnvIf Request_URI \.gif$ gif-image
CustomLog "gif-requests.log" common env=gif-image
CustomLog "nongif-requests.log" common env=!gif-image</pre>
<p>Ou, pour reproduire le comportement de l'ancienne directive
RefererIgnore, vous pouvez utiliser :</p>
<pre class="prettyprint lang-config">SetEnvIf Referer example\.com localreferer
CustomLog "referer.log" referer env=!localreferer</pre>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="globallog" id="globallog">Directive</a> <a name="GlobalLog" id="GlobalLog">GlobalLog</a> <a title="Lien permanent" href="#globallog" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit le nom et le format du fichier journal</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>GlobalLog <var>file</var>|<var>pipe</var>|<var>provider</var>
<var>format</var>|<var>nickname</var>
[env=[!]<var>environment-variable</var>|
expr=<var>expression</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_log_config</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.19 du serveur HTTP Apache</td></tr>
</table>
<p>La directive <code class="directive">GlobalLog</code> permet de spécifier un
journal partagé entre le serveur principal et tous les serveurs virtuels
définis.</p>
<p>Elle est identique à la directive <code class="directive">CustomLog</code> à ces
différences près : </p>
<ul>
<li>Elle n'est pas valide dans un contexte de serveur virtuel.</li>
<li>A la différence d'une directive <code class="directive">CustomLog</code>
définie globalement, elle est prise en compte par les serveurs virtuels
qui définissent leur propre directive <code class="directive">CustomLog</code>.</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="logformat" id="logformat">Directive</a> <a name="LogFormat" id="LogFormat">LogFormat</a> <a title="Lien permanent" href="#logformat" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Décrit un format utilisable dans un fichier
journal</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>LogFormat <var>format</var>|<var>alias</var>
[<var>alias</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>LogFormat "%h %l %u %t \"%r\" %>s %b"</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_log_config</td></tr>
</table>
<p>Cette directive permet de spécifier le format du fichier journal
des accès.</p>
<p>La directive <code class="directive">LogFormat</code> se présente sous
deux formes. Sous la première forme, qui ne possède qu'un seul
argument, la directive définit le format qui sera utilisé dans les
journaux spécifiés par les directives
<code class="directive">TransferLog</code> ultérieures. L'argument unique
peut contenir un <var>format</var> explicite comme décrit dans la
section <a href="#formats">formats de journaux personnalisés</a>
ci-dessus. Il peut aussi contenir un <var>alias</var> faisant
référence à un format de journal prédéfini par une directive
<code class="directive">LogFormat</code> comme décrit plus loin.</p>
<p>Sous sa seconde forme, la directive
<code class="directive">LogFormat</code> associe un <var>format</var>
explicite à un <var>alias</var>. Cet <var>alias</var> peut
ensuite s'utiliser dans les directives
<code class="directive">LogFormat</code> ou <code class="directive"><a href="#customlog">CustomLog</a></code> ultérieures, ce qui
évite d'avoir à répéter l'ensemble de la chaîne de format. Une
directive <code class="directive">LogFormat</code> qui définit un alias
<strong>ne fait rien d'autre</strong> -- c'est à dire qu'<em>elle ne
fait que</em> définir l'alias, elle n'applique pas le format et n'en
fait pas le format par défaut. Par conséquent, elle n'affecte pas
les directives <code class="directive"><a href="#transferlog">TransferLog</a></code> ultérieures. En
outre, la directive <code class="directive">LogFormat</code> ne peut pas
utiliser un alias pour en définir un autre. Notez que l'alias ne
doit pas contenir de caractère pourcent (<code>%</code>).</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">LogFormat "%v %h %l %u %t \"%r\" %>s %b" serveur_virtuel_commun</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="transferlog" id="transferlog">Directive</a> <a name="TransferLog" id="TransferLog">TransferLog</a> <a title="Lien permanent" href="#transferlog" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Spécifie l'emplacement d'un fichier journal</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>TransferLog <var>fichier</var>|<var>pipe</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_log_config</td></tr>
</table>
<p>Cette directive possède exactement les mêmes arguments et produit
les mêmes effets que la directive <code class="directive"><a href="#customlog">CustomLog</a></code>, à l'exception qu'elle
ne permet pas de spécifier un format de journal explicite ou la
journalisation conditionnelle des requêtes. En l'occurrence, le
format de journal est déterminé par la dernière définition d'une
directive <code class="directive"><a href="#logformat">LogFormat</a></code>
qui ne définit pas d'alias. Si aucun format particulier n'a été
spécifié, c'est le Common Log Format qui sera utilisé.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
TransferLog "logs/access_log"</pre>
</div>
</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_log_config.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mod_log_config.html" title="Français"> fr </a> |
<a href="../ja/mod/mod_log_config.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/mod/mod_log_config.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="../tr/mod/mod_log_config.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</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&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>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_log_config.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2019 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<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[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
//--><!]]></script>
</body></html>
|