summaryrefslogtreecommitdiffstats
path: root/docs/manual/mod/mod_log_config.xml.fr
blob: fdd8dc4c0c82e5f730b2bab7076ecec5ae8cb7e1 (plain)
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
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision: 1818346 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_log_config.xml.meta">

<name>mod_log_config</name>
<description>Journalisation des requêtes envoyées au
serveur</description>
<status>Base</status>
<sourcefile>mod_log_config.c</sourcefile>
<identifier>log_config_module</identifier>

<summary>
    <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 : <directive
    module="mod_log_config">TransferLog</directive> crée un fichier
    journal, <directive module="mod_log_config">LogFormat</directive>
    définit un format personnalisé, et <directive module="mod_log_config"
    >CustomLog</directive> 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
    <directive>TransferLog</directive> et
    <directive>CustomLog</directive> dans chaque serveur.</p>
</summary>
<seealso><a href="../logs.html">Les fichiers journaux
d'Apache</a></seealso>

<section id="formats"><title>Formats de journaux personnalisés</title>

    <p>L'argument format des directives <directive
    module="mod_log_config">LogFormat</directive> et <directive
    module="mod_log_config">CustomLog</directive> 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 border="1" style="zebra">
    <columnspec><column width=".2"/><column width=".8"/></columnspec>
    <tr><th>Chaîne&nbsp;de&nbsp;format</th>
        <th>Description</th></tr>

    <tr><td><code>%%</code></td>
        <td>Le signe "pourcentage"</td></tr>

    <tr><td><code>%a</code></td>
        <td>L'adresse IP distante (voir le module
	<module>mod_remoteip</module>).</td></tr>

    <tr><td><code>%{c}a</code></td>
        <td>Adresse IP distante de la connexion(voir le module
	<module>mod_remoteip</module>)</td></tr>

    <tr><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><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><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><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
	<directive module="core">HostnameLookups</directive> 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 <module>mod_remoteip</module>.</td></tr>

    <tr><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 <module>mod_remoteip</module>.</td></tr>

    <tr><td><code>%H</code></td>
        <td>Le protocole de la requête</td></tr>

    <tr><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 <module>mod_headers</module>). 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
	<module>mod_setenvif</module> 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 <directive
	module="core">KeepAlive</directive> 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><td><code>%l</code></td>
        <td>Le nom de connexion distant (en provenance d'identd, si
	disponible). Affiche un tiret, sauf si
	<module>mod_ident</module> est présent et si <directive
        module="mod_ident">IdentityCheck</directive> 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><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><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><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><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><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><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>%&gt;s</code> pour
	la dernière.</td></tr>

    <tr><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><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><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><td><code>%v</code></td>
        <td>Le nom canonique du serveur qui a servi la requête, défini
	par la directive <directive
	module="core">ServerName</directive>.</td></tr>

    <tr><td><code>%V</code></td>
        <td>La nom du serveur en tenant compte de la définition de la
	directive <directive module="core"
        >UseCanonicalName</directive>.</td></tr>

    <tr><td><code>%X</code></td>
        <td>Statut de la connexion lorsque la réponse a été renvoyée
	:

        <table>
        <columnspec><column width=".2"/><column width=".6"/></columnspec>
        <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
	<module>mod_logio</module>.</td></tr>

    <tr><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
	<module>mod_logio</module>.</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 <module>mod_logio</module> pour utiliser cette chaîne de
	format.</td></tr>

    <tr><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>

    <section id="modifiers"><title>Modificateurs</title>

      <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 "&lt;" et "&gt;" 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>%&gt;s</code> pour enregistrer le
      statut final de la requête, et <code>%&lt;u</code> pour
      enregistrer l'utilisateur authentifié à l'origine pour une requête
      redirigée en interne vers une ressource sans authentification.</p>

    </section>

    <section id="format-notes"><title>Quelques Notes</title>

      <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 <module>mod_logio</module>,
      enregistrera le nombre réel d'octets envoyés sur le réseau.</p>

      <p>Note : <module>mod_cache</module> 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>

      <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>
      </note>

    </section>

    <section id="examples"><title>Exemples</title>

      <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\" %&gt;s %b"</code></dd>

        <dt>Format de journal courant avec un serveur virtuel</dt>
        <dd><code>"%v %h %l %u %t \"%r\" %&gt;s %b"</code></dd>

        <dt>Format de journal NCSA étandu/combiné</dt>
        <dd><code>"%h %l %u %t \"%r\" %&gt;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 -&gt; %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>

    </section>
</section>

<section id="security"><title>Considérations concernant la
sécurité</title>
    <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>
</section>

<directivesynopsis>
<name>BufferedLogs</name>
<description>Enregistre les entrées du journal dans un tampon en mémoire
avant de les écrire sur disque</description>
<syntax>BufferedLogs On|Off</syntax>
<default>BufferedLogs Off</default>
<contextlist><context>server config</context></contextlist>

<usage>
    <p>Lorsque la directive <directive>BufferedLogs</directive> est à
    "on", <module>mod_log_config</module> 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>

    <note>Cette directive doit être utilisée avec
    précautions car un crash peut provoquer la perte de données de
    journalisation.</note>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CookieLog</name>
<description>Définit le nom du fichier pour la journalisation des
cookies</description>
<syntax>CookieLog <var>nom-fichier</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<compatibility>Cette directive est obsolète.</compatibility>

<usage>
    <p>La directive <directive>CookieLog</directive> permet de définir
    le nom du fichier pour la journalisation des cookies. Le nom du
    fichier est relatif au répertoire défini par la directive <directive
    module="core">ServerRoot</directive>. Cette directive n'est présente
    qu'à des fins de compatibilité avec with <code>mod_cookies</code>,
    et est obsolète.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CustomLog</name>
<description>Définit le nom et le format du fichier
journal</description>
<syntax>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>]</syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>La directive <directive>CustomLog</directive> 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 <directive module="core">ServerRoot</directive>.</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.

      <note type="warning"><title>Sécurité :</title>
      <p>Si les journaux sont redirigés vers un programme, ce dernier
      s'exécutera sous l'utilisateur qui a démarré
      <program>httpd</program>. Ce sera l'utilisateur root si le serveur
      a été démarré par root ; vérifiez que le programme est
      sécurisé.</p>
      </note>
      <note type="warning"><title>Note</title>
        <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>
      </note></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 <module>mod_journald</module> ou
      <module>mod_syslog</module> :
    <highlight language="config">
# Journalisation CustomLog vers journald
CustomLog "journald" "%h %l %u %t \"%r\" %&gt;s %b"

# Journalisation CustomLog vers syslog avec l'option "user"
CustomLog "syslog:user" "%h %l %u %t \"%r\" %&gt;s %b"
    </highlight>
      </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 <directive
    module="mod_log_config">LogFormat</directive>, 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>

    <highlight language="config">
# Journal personnalisé avec alias de format
LogFormat "%h %l %u %t \"%r\" %&gt;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\" %&gt;s %b"
    </highlight>

    <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
    <module>mod_setenvif</module> et/ou <module>mod_rewrite</module>.
    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>

    <highlight language="config">
SetEnvIf Request_URI \.gif$ gif-image
CustomLog "gif-requests.log" common env=gif-image
CustomLog "nongif-requests.log" common env=!gif-image
    </highlight>

    <p>Ou, pour reproduire le comportement de l'ancienne directive
    RefererIgnore, vous pouvez utiliser :</p>

    <highlight language="config">
SetEnvIf Referer example\.com localreferer
CustomLog "referer.log" referer env=!localreferer
    </highlight>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>LogFormat</name>
<description>Décrit un format utilisable dans un fichier
journal</description>
<syntax>LogFormat <var>format</var>|<var>alias</var>
[<var>alias</var>]</syntax>
<default>LogFormat "%h %l %u %t \"%r\" %>s %b"</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>Cette directive permet de spécifier le format du fichier journal
    des accès.</p>

    <p>La directive <directive>LogFormat</directive> 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
    <directive>TransferLog</directive> 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
    <directive>LogFormat</directive> comme décrit plus loin.</p>

    <p>Sous sa seconde forme, la directive
    <directive>LogFormat</directive> associe un <var>format</var>
    explicite à un <var>alias</var>. Cet <var>alias</var> peut
    ensuite s'utiliser dans les directives
    <directive>LogFormat</directive> ou <directive
    module="mod_log_config">CustomLog</directive> ultérieures, ce qui
    évite d'avoir à répéter l'ensemble de la chaîne de format. Une
    directive <directive>LogFormat</directive> 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 <directive
    module="mod_log_config">TransferLog</directive> ultérieures. En
    outre, la directive <directive>LogFormat</directive> 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>

    <example><title>Exemple</title>
    <highlight language="config">
      LogFormat "%v %h %l %u %t \"%r\" %&gt;s %b" serveur_virtuel_commun
      </highlight>
    </example>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>TransferLog</name>
<description>Spécifie l'emplacement d'un fichier journal</description>
<syntax>TransferLog <var>fichier</var>|<var>pipe</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>Cette directive possède exactement les mêmes arguments et produit
    les mêmes effets que la directive <directive
    module="mod_log_config">CustomLog</directive>, à 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 <directive module="mod_log_config">LogFormat</directive>
    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>

    <example><title>Exemple</title>
      <highlight language="config">
LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-agent}i\""
TransferLog "logs/access_log"
      </highlight>
    </example>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>GlobalLog</name>
<description>Définit le nom et le format du fichier journal</description>
<syntax>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>]</syntax>
<contextlist><context>server config</context>
</contextlist>
<compatibility>Disponible à partir de la version 2.4.19 du serveur HTTP Apache</compatibility>

<usage>

    <p>La directive <directive>GlobalLog</directive> 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 <directive>CustomLog</directive> à 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 <directive>CustomLog</directive>
       définie globalement, elle est prise en compte par les serveurs virtuels
       qui définissent leur propre directive <directive>CustomLog</directive>.</li>
    </ul>
</usage>
</directivesynopsis>

</modulesynopsis>