<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
-<!-- English Revision: 1933506 -->
+<!-- English Revision: 1935553 -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<section id="rotation">
<title>Rotation des journaux</title>
- <p>Même dans le cas d'un serveur modérément sollicité, la quantité
- d'informations stockées dans les fichiers journaux est très importante.
- Le fichier journal des accès grossit en général d'1 Mo ou plus toutes
- les 10000 requêtes. Il est par conséquent nécessaire d'effectuer
- périodiquement la rotation des journaux en déplaçant ou supprimant les
- fichiers correspondants. On ne peut pas le faire pendant que le serveur
- est en cours d'exécution, car Apache httpd va continuer à écrire dans l'ancien
- fichier journal aussi longtemps qu'il le maintiendra ouvert.
- C'est pourquoi le serveur doit être
- <a href="stopping.html">redémarré</a> après le déplacement ou la
- suppression des fichiers journaux de façon à ce qu'il en ouvre
- de nouveaux.</p>
-
- <p>Avec un redémarrage <em>graceful</em>, on peut faire en sorte que le
- serveur ouvre de nouveaux fichiers journaux sans perdre de connexions
- existantes ou en cours avec les clients. Cependant, pour que ceci soit
- possible, le serveur doit continuer à écrire dans les anciens fichiers
- journaux pendant qu'il termine le traitement des requêtes en cours.
- Il est donc nécessaire d'attendre un certain temps après le rédémarrage
- avant d'effectuer tout traitement sur les fichiers journaux. Voici un
- scénario typique dans lequel on effectue une simple rotation des
- journaux en compressant les anciens fichiers correspondants afin
- de gagner de l'espace disque :</p>
-
- <example>
- mv access_log access_log.old<br />
- mv error_log error_log.old<br />
- apachectl graceful<br />
- sleep 600<br />
- gzip access_log.old error_log.old
- </example>
+ <p>Même sur un serveur modérément sollicité, les fichiers journaux
+ grossissent rapidement — le journal des accès croît à peu près de 1 Mo ou
+ plus toutes les 10000 requêtes. Sans rotation, les journaux consomment de
+ plus en plus d’espace disque et deviennent difficiles à analyser. Il est
+ donc recommandé de configurer une rotation automatique des journaux dès le
+ départ.</p>
+
+ <section id="rotation-rotatelogs">
+ <title>Utilisation de rotatelogs (recommandé)</title>
+
+ <p>L’approche la plus simple consiste à utiliser le programme
+ <program>rotatelogs</program> intégré à httpd en utilisant la <a
+ href="#piped">redirection des journaux</a>. Ce programme permet une
+ rotation des journaux sans avoir à redémarrer le serveur et sans outil
+ externe. Pour une rotation des journaux toutes les 24 heures :</p>
+
+<example>
+<highlight language="config">
+CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined
+ErrorLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/error_log 86400"
+</highlight>
+</example>
+
+ <p>Pour une rotation lorsque la taille du journal atteint une certaine
+ valeur (par exemple 100 Mo) :</p>
+
+<example>
+<highlight language="config">
+CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 100M" combined
+</highlight>
+</example>
+
+ <p>Vous pouvez aussi utiliser un motif de nom de fichier avec horodatage
+ sous forme d’une chaîne au format <code>strftime</code> :</p>
+
+<example>
+<highlight language="config">
+CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log.%Y-%m-%d 86400" combined
+</highlight>
+</example>
+
+ <p>Voir <program>rotatelogs</program> pour une description complète de ses
+ options, en particulier les temps de décalage, les limitations de nombre de
+ fichiers et la compression.</p>
+ </section>
- <p>La section suivante présente une autre méthode de rotation des journaux
- qui consiste à utiliser les
- <a href="#piped">journaux redirigés</a>.</p>
+ <section id="rotation-logrotate">
+ <title>Utilisation de logrotate ou de la gestion des journaux par le
+ système</title>
+
+ <p>La plupart des distributions de Linux fournissent le programme
+ <code>logrotate</code> qui effectue une rotation, une compression et une
+ expiration des fichiers journaux selon une planification. Si votre
+ distribution comporte déjà une configuration de logrotate pour httpd
+ (examinez <code>/etc/logrotate.d/</code>), elle gère peut-être déjà la
+ rotation pour vous.</p>
+
+ <p>Lorsqu’on utilise un outil de rotation externe comme
+ <code>logrotate</code>, il faut faire en sorte que httpd réouvre ses
+ fichiers journaux quand les anciens ont été mis de côté. Pour ce faire,
+ l’approche standard est un redémarrage <em>graceful</em> :</p>
+
+<example>
+<highlight language="sh">
+/usr/sbin/apachectl graceful
+</highlight>
+</example>
+
+ <p>Votre script <code>postrotate</code> dans la configuration de logrotate
+ doit contenir cette dernière commande (ou la commande équivalente
+ <code>systemctl reload</code>). Comme httpd continue d’écrire dans
+ l’ancien fichier jusqu’à ce qu’il reçoive le signal, tout post-traitement
+ des fichiers ayant subi une rotation doit prévoir un bref délai.</p>
+
+ </section>
</section>
<section id="piped">
<title>Journaux redirigés</title>
- <p>Nous avons vu que le démon httpd écrivait les informations de
- journalisation des erreurs et des accès dans un fichier journal ;
- il peut aussi
- rediriger ces informations vers un autre processus par l'intermédiaire d'un
- tube de communication (pipe). Cette fonctionnalité améliore
- considérablement la souplesse de la journalisation, sans ajouter de code
- au serveur principal. Pour rediriger les informations de journalisation
- vers un tube de communication, remplacez simplement le nom de fichier
- journal par
- le caractère pipe "<code>|</code>", suivi du nom de l'exécutable qui va
- recueillir les entrées de journal sur son entrée
- standard. Le serveur va
- lancer le processus de redirection des journaux au moment du démarrage du
- serveur, et le relancera s'il cesse de fonctionner
- pendant l'exécution du serveur.
- (Nous dénommons cette technique "journalisation
- redirigée fiable" grâce à cette dernière fonctionnalité.)</p>
-
- <p>Les processus de journalisation redirigée sont lancés par le processus
- httpd parent, et héritent de l'UID de ce dernier. Cela signifie que les
- programmes de journalisation dirigée s'exécutent généralement en tant que
- root. Il est donc très important que ces programmes soient simples et
- sécurisés.</p>
-
- <p>Un des grands avantages de la journalisation redirigée est la possibilité
- d'effectuer la rotation des journaux sans avoir à redémarrer le serveur. Pour
- accomplir cette tâche, le serveur HTTP Apache fournit un programme simple
- appelé <program>rotatelogs</program>. Par exemple, pour une rotation des
- journaux toutes les 24 heures, ajoutez ces lignes :</p>
-
- <highlight language="config">
- CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common
- </highlight>
-
- <p>Notez que l'ensemble de la commande qui sera appelée par le tube de
- communication a été placée entre guillemets. Bien que cet exemple
- concerne le journal des accès, la même technique peut être utilisée
- pour le journal des erreurs.</p>
-
- <p>Comme la journalisation conditionnelle, la journalisation redirigée est
- un outil très puissant, mais si elle existe, il est préférable d'utiliser
- une solution plus simple comme le traitement à posteriori hors ligne.</p>
-
-
- <p>Par défaut, le processus de redirection du journal est lancé sans
- invoquer un shell. Pour invoquer un shell, utilisez "<code>|$</code>"
- au lieu de "<code>|</code>" (en général avec <code>/bin/sh -c</code>)
- :</p>
-
- <highlight language="config">
-# Invocation de "rotatelogs" en utilisant un shell
-CustomLog "|$/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common
- </highlight>
-
-
- <p>Il s'agissait du comportement par défaut sous Apache 2.2. Selon
- les spécificités du shell, ceci peut générer un processus shell
- supplémentaire pour toute la durée du programme de redirection du
- journal, et induire des problèmes de gestion de signaux au cours du
- redémarrage. La notation "<code>||</code>" est aussi supportée pour
- des raisons de compatibilité avec Apache 2.2 et est équivalente à
- "<code>|</code>".</p>
+ <p>httpd peut écrire dans les fichiers journaux des erreurs et des accès à
+ travers un tube (pipe) vers un autre processus, plutôt que d’écrire
+ directement dans un fichier. Pour mettre en œuvre cette redirection,
+ remplacez le nom du fichier par le caractère pipe "<code>|</code>", suivi de
+ la commande qui recevra les entrées du journal sur son entrée standard :</p>
+
+<example>
+<highlight language="config">
+CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined
+</highlight>
+</example>
+
+ <p>httpd démarre le processus de redirection des journaux au démarrage du
+ serveur et le redémarre automatiquement s’il se plante (ce comportement est
+ parfois nommé « journalisation redirigée fiable »). L’ensemble de la
+ commande à partir du caractère pipe doit être entourée de guillemets — cette
+ syntaxe fonctionne pour les deux directives <directive
+ module="mod_log_config">CustomLog</directive> et <directive
+ module="core">ErrorLog</directive>.</p>
+
+ <p>Les processus de redirection des journaux sont lancés par le processus
+ httpd parent et héritent de son identifiant utilisateur. Cela signifie en
+ général qu’ils s’exécutent en tant que root ; faites donc en sorte que les
+ programmes de redirection des journaux restent simples et sécurisés.</p>
+
+ <p>Par défaut, le processus de redirection des journaux est lancé
+ directement, sans passer par un shell. Vous pouvez utiliser
+ "<code>|$</code>" à la place de "<code>|</code>" pour effectuer ce lancement
+ via un shell (en général <code>/bin/sh -c</code>) :</p>
+
+<example>
+<highlight language="config">
+CustomLog "|$/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined
+</highlight>
+</example>
+
+ <p>La variante avec shell est parfois requise si votre commande redirigée
+ utilise des fonctionnalités du shell comme les caractères génériques ou le
+ développement de variable. Dans la plupart des cas, il est préférable
+ d’utiliser l’invocation directe (sans passer par un shell).</p>
<note><title>Note à propos de la plateforme Windows</title>
<p>Notez que sous Windows, la mémoire allouée au bureau (desktop