logs.xml.fr revision 650ba5bfc49e73bf370f3cff32d3cdca004a2861
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster<?xml version="1.0" encoding="ISO-8859-1" ?>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster<!DOCTYPE manualpage SYSTEM "/style/manualpage.dtd">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster<?xml-stylesheet type="text/xsl" href="/style/manual.fr.xsl"?>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster<!-- French translation : Lucien GENTIS -->
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster<!-- Reviewed by : Vincent Deffontaines -->
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster<!-- English Revision: 1174747:1300924 (outdated) -->
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster<!--
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Licensed to the Apache Software Foundation (ASF) under one or more
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster contributor license agreements. See the NOTICE file distributed with
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this work for additional information regarding copyright ownership.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster The ASF licenses this file to You under the Apache License, Version 2.0
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (the "License"); you may not use this file except in compliance with
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster the License. You may obtain a copy of the License at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster http://www.apache.org/licenses/LICENSE-2.0
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Unless required by applicable law or agreed to in writing, software
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster distributed under the License is distributed on an "AS IS" BASIS,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster See the License for the specific language governing permissions and
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster-->
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster<manualpage metafile="logs.xml.meta">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
ae2aee96fc0dc24ac5b108d0c40e1f3b735f4ca3Sam Fraser <title>Fichiers journaux</title>
ae2aee96fc0dc24ac5b108d0c40e1f3b735f4ca3Sam Fraser
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <summary>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Pour v&eacute;ritablement g&eacute;rer un serveur web,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster il est n&eacute;cessaire de disposer d'un
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retour d'informations &agrave; propos de l'activit&eacute; et des performances du
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster serveur, ainsi que de tout probl&egrave;me qui pourrait survenir. Le serveur HTTP
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Apache propose des fonctionnalit&eacute;s de journalisation souples et tr&egrave;s
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster compl&egrave;tes. Ce document d&eacute;crit comment configurer ces fonctionnalit&eacute;s de
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster journalisation et interpr&eacute;ter le contenu des journaux.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </summary>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <section id="overview">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <title>Vue d'ensemble</title>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <related>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <modulelist>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <module>mod_log_config</module>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <module>mod_log_forensic</module>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <module>mod_logio</module>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <module>mod_cgi</module>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </modulelist>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </related>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Le serveur HTTP Apache fournit toute une vari&eacute;t&eacute; de m&eacute;canismes
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster diff&eacute;rents pour la journalisation de tout ce qui peut se passer au
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sein de votre serveur, depuis la requ&ecirc;te initiale, en passant par le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster processus de mise en correspondance des URLs, et jusqu'&agrave; la fermeture
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de la connexion, y compris toute erreur pouvant survenir au cours du
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster traitement. De plus, certains modules tiers fournissent des
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster fonctionnalit&eacute;s de journalisation ou ins&egrave;rent des entr&eacute;es dans les
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster fichiers journaux existants, et les applications comme les programmes
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CGI, les scripts PHP ou autres gestionnaires peuvent envoyer des
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messages vers le journal des erreurs du serveur.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Ce document d&eacute;crit le fonctionnement des modules de journalisation
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster fournis en standard avec le serveur httpd.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </section>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <section id="security">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <title>Avertissement &agrave; propos de la s&eacute;curit&eacute;</title>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Tout utilisateur qui a les droits en &eacute;criture sur le r&eacute;pertoire dans
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster lequel Apache httpd &eacute;crit ses journaux pourra quasi
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster certainement avoir acc&egrave;s &agrave; l'uid sous lequel le serveur est d&eacute;marr&eacute;, en
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster l'occurrence habituellement root. N'accordez <em>PAS</em> aux utilisateurs
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster l'acc&egrave;s en &eacute;criture au r&eacute;pertoire dans lequel les journaux sont stock&eacute;s
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sans savoir exactement quelles en seraient les cons&eacute;quences ; voir le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster document <a href="misc/security_tips.html">conseils sur la s&eacute;curit&eacute;</a>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster pour plus de d&eacute;tails.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>En outre, les journaux peuvent contenir des informations fournies
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster directement par un client, sans caract&egrave;res d'&eacute;chappement. Des clients mal
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster intentionn&eacute;s peuvent donc ins&eacute;rer des caract&egrave;res de contr&ocirc;le dans les
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster journaux, et il convient par cons&eacute;quent d'&ecirc;tre tr&egrave;s prudent lors de la
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster manipulation des journaux bruts.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </section>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <section id="errorlog">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <title>Journal des erreurs</title>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <related>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <modulelist>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <module>core</module>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </modulelist>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directivelist>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="core">ErrorLog</directive>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="core">LogLevel</directive>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </directivelist>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </related>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Le journal des erreurs du serveur, dont le nom et la localisation sont
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d&eacute;finis par la directive <directive module="core">ErrorLog</directive>,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster est le journal le plus important. C'est dans celui-ci
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster que le d&eacute;mon Apache httpd va envoyer les informations de diagnostic et
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster enregistrer toutes les erreurs qui surviennent lors du traitement des
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requ&ecirc;tes. Lorsqu'un probl&egrave;me survient au d&eacute;marrage du serveur ou pendant
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster son fonctionnement, la premi&egrave;re chose &agrave; faire est de regarder dans ce
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster journal, car il vous renseignera souvent sur le probl&egrave;me rencontr&eacute; et
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster la mani&egrave;re d'y rem&eacute;dier.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Le journal des erreurs est habituellement enregistr&eacute; dans un fichier
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (en g&eacute;n&eacute;ral <code>error_log</code> sur les syst&egrave;mes de type Unix et
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <code>error.log</code> sur Windows et OS/2). Sur les syst&egrave;mes de type Unix,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster le serveur peut aussi enregistrer ses erreurs dans
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <code>syslog</code> ou les
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <a href="#piped">rediriger vers un programme</a> par l'interm&eacute;diaire d'un
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster tube de communication (pipe).</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Le format par d&eacute;faut du journal des erreurs est descriptif et de forme
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relativement libre. Certaines informations apparaissent cependant dans la
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster plupart des entr&eacute;es du journal. Voici un message typique
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster &agrave; titre d'exemple : </p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster [Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1]
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster client denied by server configuration:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /export/home/live/ap/htdocs/test
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Le premier champ de l'entr&eacute;e du journal est la date et l'heure du
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster message. Le second champ indique la s&eacute;v&eacute;rit&eacute; de l'erreur rapport&eacute;e. La
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster directive <directive module="core">LogLevel</directive> permet de
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster restreindre le type des erreurs qui doivent &ecirc;tre enregistr&eacute;es
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dans le journal des erreurs en d&eacute;finissant leur niveau de s&eacute;v&eacute;rit&eacute;. Le
ae2aee96fc0dc24ac5b108d0c40e1f3b735f4ca3Sam Fraser troisi&egrave;me champ contient l'adresse IP du client qui a g&eacute;n&eacute;r&eacute; l'erreur.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Vient ensuite le message proprement dit, qui indique dans ce cas que le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster serveur a &eacute;t&eacute; configur&eacute; pour interdire l'acc&egrave;s au client. Le serveur
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster indique le chemin syst&egrave;me du document requis (et non
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster son chemin web).</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Une grande vari&eacute;t&eacute; de messages diff&eacute;rents peuvent appara&icirc;tre dans le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster journal des erreurs. La plupart d'entre eux sont similaires &agrave; l'exemple
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ci-dessus. Le journal des erreurs peut aussi contenir des informations de
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d&eacute;bogage en provenance de scripts CGI. Toute information qu'un script CGI
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster &eacute;crit sur la sortie d'erreurs standard <code>stderr</code> sera recopi&eacute;e
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster telle quelle dans le journal des erreurs.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>La directive <directive module="core">ErrorLogFormat</directive>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster vous permet de personnaliser le format du journal des erreurs, et de
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d&eacute;finir les informations &agrave; journaliser. Si
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <module>mod_unique_id</module> est pr&eacute;sent, vous pouvez utiliser le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster drapeau <code>%L</code> &agrave; la fois dans le journal des erreurs et
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dans le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster journal des acc&egrave;s, ce qui aura pour effet de g&eacute;n&eacute;rer un identifiant
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d'entr&eacute;e qui vous permettra de corr&eacute;ler les entr&eacute;es du journal des
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster erreurs avec celles du journal des acc&egrave;s.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Pendant la phase de test, il est souvent utile de visualiser en continu
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster le journal des erreurs afin de d&eacute;tecter tout probl&egrave;me &eacute;ventuel. Sur les
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster syst&egrave;mes de type Unix, ceci s'effectue &agrave; l'aide de la commande :</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster tail -f error_log
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </section>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <section id="permodule">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <title>Journalisation par module</title>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>La directive <directive module="core">LogLevel</directive> permet
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de sp&eacute;cifier un niveau de s&eacute;v&eacute;rit&eacute; de journalisation pour chaque
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster module. Vous pouvez ainsi r&eacute;soudre un probl&egrave;me propre &agrave; un module particulier
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster en augmentant son volume de journalisation sans augmenter ce volume
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster pour les autres modules. Ceci est particuli&egrave;rement utile lorsque
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster vous voulez obtenir des d&eacute;tails sur le fonctionnement de modules
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster comme <module>mod_proxy</module> ou <module>mod_rewrite</module>.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Pour ce faire, vous devez sp&eacute;cifier le nom du module dans votre
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster directive <directive>LogLevel</directive> :</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogLevel info rewrite:trace5
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Dans cet exemple, le niveau de journalisation g&eacute;n&eacute;ral est d&eacute;fini
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster &agrave; info, et &agrave; <code>trace5</code> pour <module>mod_rewrite</module>.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <note>Cette directive remplace les directives de journalisation par
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster module des versions pr&eacute;c&eacute;dentes du serveur, comme
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <code>RewriteLog</code>.</note>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </section>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <section id="accesslog">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <title>Journal des acc&egrave;s</title>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <related>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <modulelist>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <module>mod_log_config</module>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <module>mod_setenvif</module>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </modulelist>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directivelist>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="mod_log_config">CustomLog</directive>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="mod_log_config">LogFormat</directive>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="mod_setenvif">SetEnvIf</directive>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </directivelist>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </related>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Le journal des acc&egrave;s au serveur
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster enregistre toutes les requ&ecirc;tes que traite
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ce dernier. La localisation et le contenu du journal des acc&egrave;s sont d&eacute;finis
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster par la directive <directive module="mod_log_config">CustomLog</directive>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster La directive <directive module="mod_log_config">LogFormat</directive>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster permet de simplifier la s&eacute;lection du contenu du journal. Cette section
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d&eacute;crit comment configurer le serveur pour l'enregistrement des informations
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dans le journal des acc&egrave;s.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Bien &eacute;videmment, le stockage d'informations dans le journal des acc&egrave;s
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster n'est que le point de d&eacute;part de la gestion de la journalisation. L'&eacute;tape
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster suivante consiste &agrave; analyser ces informations de fa&ccedil;on &agrave; pouvoir en
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster extraire des statistiques utiles. L'analyse de journaux en g&eacute;n&eacute;ral est en
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dehors du sujet de ce document et ne fait pas vraiment partie int&eacute;grante
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster du travail du serveur web lui-m&ecirc;me. Pour plus d'informations &agrave; propos de ce
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sujet et des applications d&eacute;di&eacute;es &agrave; l'analyse de journaux, vous pouvez vous
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster r&eacute;f&eacute;rer &agrave; <a href="http://dmoz.org/Computers/Software/Internet/
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Site_Management/Log_analysis/">Open Directory</a> ou
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <a href="http://dir.yahoo.com/Computers_and_Internet/Software/
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Internet/World_Wide_Web/Servers/Log_Analysis_Tools/">Yahoo</a>.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Diff&eacute;rentes versions du d&eacute;mon Apache httpd utilisaient d'autres modules
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster et directives pour contr&ocirc;ler la journalisation des acc&egrave;s, &agrave; l'instar de
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster mod_log_referer, mod_log_agent, et de la directive
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <code>TransferLog</code>. La directive
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="mod_log_config">CustomLog</directive> rassemble
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d&eacute;sormais les fonctionnalit&eacute;s de toutes les anciennes directives.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Le format du journal des acc&egrave;s est hautement configurable. Il est
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d&eacute;fini &agrave; l'aide d'une cha&icirc;ne de format qui ressemble sensiblement &agrave; la
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cha&icirc;ne de format de style langage C de printf(1). Vous trouverez quelques
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster exemples dans les sections suivantes. Pour une liste exhaustive de ce que
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster peut contenir une cha&icirc;ne de format, vous pouvez vous r&eacute;f&eacute;rer au chapitre
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <a href="mod/mod_log_config.html#formats">cha&icirc;nes de format</a> de la
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster documentation du module <module>mod_log_config</module>.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <section id="common">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <title>Format habituel du journal</title>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Voici une configuration typique pour le journal des acc&egrave;s :</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CustomLog logs/access_log common
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Ici est d&eacute;finie l'<em>identit&eacute;</em> <code>common</code> qui est
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ensuite associ&eacute;e &agrave; une cha&icirc;ne de format de journalisation particuli&egrave;re.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster La cha&icirc;ne de format est constitu&eacute;e de directives d&eacute;butant par le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster caract&egrave;re %, chacune d'entre elles indiquant au serveur d'enregistrer
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster un &eacute;l&eacute;ment particulier d'information. Des caract&egrave;res litt&eacute;raux peuvent
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster aussi &ecirc;tre ins&eacute;r&eacute;s dans la cha&icirc;ne de format ; il seront copi&eacute;s tels
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster quels dans le flux de sortie destin&eacute; &agrave; la journalisation.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Les guillemets (<code>"</code>) doivent &ecirc;tre &eacute;chapp&eacute;es en les faisant
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster pr&eacute;c&eacute;der d'un anti-slash (<code>\</code>) afin qu'elles ne soient pas
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster interpr&eacute;t&eacute;es comme la fin de la cha&icirc;ne de format. La cha&icirc;ne de format
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster peut aussi contenir les caract&egrave;res de contr&ocirc;le sp&eacute;ciaux
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "<code>\n</code>" et "<code>\t</code>" pour ins&eacute;rer respectivement
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster un passage &agrave; la ligne et une tabulation.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>La directive <directive module="mod_log_config">CustomLog</directive>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d&eacute;finit un nouveau fichier journal en l'associant &agrave; l'identit&eacute;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster pr&eacute;c&eacute;demment d&eacute;finie. Le chemin du nom de fichier associ&eacute; au journal
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster des acc&egrave;s est relatif au chemin d&eacute;fini par la directive
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="core">ServerRoot</directive>, sauf s'il
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d&eacute;bute par un slash.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>La configuration ci-dessus va enregistrer les entr&eacute;es de
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster journalisation selon un format connu sous le nom de
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Common Log Format (CLF) pour "Format de journalisation standard".
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Ce format standard peut &ecirc;tre produit par de nombreux serveurs web
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster diff&eacute;rents et lu par de nombreux programmes d'analyse de journaux.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Les entr&eacute;es de fichier journal g&eacute;n&eacute;r&eacute;es selon le format CLF
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ressemblent &agrave; ceci :</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /apache_pb.gif HTTP/1.0" 200 2326
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Chaque partie de cette entr&eacute;e de journal est d&eacute;crite
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dans ce qui suit.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dl>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dt><code>127.0.0.1</code> (<code>%h</code>)</dt>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dd>Il s'agit de l'adresse IP du client (l'h&ocirc;te distant) qui a envoy&eacute;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster la requ&ecirc;te au serveur. Si la directive
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="core">HostnameLookups</directive> est positionn&eacute;e &agrave;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <code>On</code>, le serveur va essayer de d&eacute;terminer le nom de l'h&ocirc;te
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster et de l'enregistrer &agrave; la place de l'adresse IP. Cette configuration
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster n'est cependant pas recommand&eacute;e car elle peut ralentir le serveur de
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster mani&egrave;re significative. Il est par cons&eacute;quent pr&eacute;f&eacute;rable d'utiliser un
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster processeur d'analyse de journaux a posteriori
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster tel que <program>logresolve</program>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster pour d&eacute;terminer les noms d'h&ocirc;te. L'adresse IP indiqu&eacute;e ici n'est pas
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster n&eacute;cessairement l'adresse IP de la machine devant laquelle se trouve
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster l'utilisateur. Si un serveur mandataire s'intercale entre le serveur
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster et l'utilisateur, l'adresse indiqu&eacute;e sera celle du mandataire et non
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster celle de la machine &agrave; l'origine de la requ&ecirc;te.</dd>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dt><code>-</code> (<code>%l</code>)</dt>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dd>Le "trait d'union" indique que la portion d'information
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster correspondante n'est pas disponible. Dans le cas pr&eacute;sent, l'information
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster non disponible est l'identit&eacute; (RFC 1413) du client telle que d&eacute;termin&eacute;e
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster par <code>identd</code> sur la machine cliente. Cette information est
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster tr&egrave;s peu fiable et ne devrait jamais &ecirc;tre utilis&eacute;e, sauf dans le cas
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de r&eacute;seaux internes &eacute;troitement contr&ocirc;l&eacute;s. Le d&eacute;mon httpd ne cherchera
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d'ailleurs &agrave; obtenir cette information que si la directive
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="core">IdentityCheck</directive> est positionn&eacute;e
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster &agrave; <code>On</code>.</dd>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dt><code>frank</code> (<code>%u</code>)</dt>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dd>Il s'agit de l'identifiant utilisateur de la personne qui a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster demand&eacute; le document, issu d'une authentification HTTP.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Ce m&ecirc;me identifiant est en g&eacute;n&eacute;ral fourni aux scripts CGI par
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster l'interm&eacute;diaire de la valeur de la variable d'environnement
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <code>REMOTE_USER</code>. Si le statut de la requ&ecirc;te (voir plus loin)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster est 401, cette identifiant n'est pas fiable car l'utilisateur n'est
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster pas encore authentifi&eacute;. Si le document n'est pas prot&eacute;g&eacute; par
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster mot de passe, cette partie d'information sera repr&eacute;sent&eacute;e par
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "<code>-</code>", comme la partie pr&eacute;c&eacute;dente.</dd>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dt><code>[10/Oct/2000:13:55:36 -0700]</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (<code>%t</code>)</dt>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dd>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster L'heure &agrave; laquelle la requ&ecirc;te a &eacute;t&eacute; re&ccedil;ue.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Le format est le suivant :
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p class="indent">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <code>[jour/mois/ann&eacute;e:heure:minutes:secondes zone]<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster jour = 2*chiffre<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster mois = 3*lettre<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ann&eacute;e = 4*chiffre<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster heure = 2*chiffre<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster minutes = 2*chiffre<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secondes = 2*chiffre<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster zone = (`+' | `-') 4*chiffre</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </p>Il est possible de modifier le format d'affichage de l'heure
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster en sp&eacute;cifiant <code>%{format}t</code> dans la cha&icirc;ne de format du
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster journal, o&ugrave; <code>format</code> est une cha&icirc;ne de format
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de la forme de celle de la fonction <code>strftime(3)</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de la biblioth&egrave;que C standard, ou choisie parmi les
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster formats sp&eacute;ciaux support&eacute;s. Pour plus de d&eacute;tails,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster reportez-vous aux. <a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster href="mod/mod_log_config.html#formats">cha&icirc;nes de format</a>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de <module>mod_log_config</module>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </dd>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dt><code>"GET /apache_pb.gif HTTP/1.0"</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (<code>\"%r\"</code>)</dt>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dd>La ligne de la requ&ecirc;te du client est plac&eacute;e entre guillemets.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Elle contient de nombreuses informations utiles. Tout d'abord, la
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster m&eacute;thode utilis&eacute;e par le client est <code>GET</code>. Ensuite, le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster client a demand&eacute; la ressource <code>/apache_pb.gif</code>, et enfin,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster le client a utilis&eacute; le protocole <code>HTTP/1.0</code>. Il est aussi
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster possible d'enregistrer s&eacute;par&eacute;ment une ou plusieurs parties de la
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requ&ecirc;te. Par exemple, la cha&icirc;ne de format "<code>%m %U %q %H</code>"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster va enregistrer la m&eacute;thode, le chemin, la cha&icirc;ne de la requ&ecirc;te et le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protocole, ce qui donnera le m&ecirc;me r&eacute;sultat que
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "<code>%r</code>".</dd>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dt><code>200</code> (<code>%&gt;s</code>)</dt>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dd>C'est le code de statut que le serveur retourne au client. Cette
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster information est tr&egrave;s importante car elle indique si la requ&ecirc;te a fait
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster l'objet d'une r&eacute;ponse positive (codes commen&ccedil;ant par 2), une
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster redirection (codes commen&ccedil;ant par 3), une erreur due au client (codes
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster commen&ccedil;ant par 4), ou une erreur due au serveur (codes commen&ccedil;ant
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster par 5). Vous trouverez la liste compl&egrave;te des codes de statut possibles
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dans la <a href="http://www.w3.org/Protocols/rfc2616/
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster rfc2616.txt">specification HTTP</a> (RFC2616 section 10).</dd>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dt><code>2326</code> (<code>%b</code>)</dt>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dd>La derni&egrave;re partie indique la taille de l'objet retourn&eacute; au client,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster en-t&ecirc;tes non compris. Si aucun contenu n'a &eacute;t&eacute; retourn&eacute; au client, cette
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster partie contiendra "<code>-</code>". Pour indiquer l'absence de contenu
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster par "<code>0</code>", utilisez <code>%B</code> au lieu de
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <code>%b</code>.</dd>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </dl>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </section>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <section id="combined">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <title>Combined Log Format (Format de journalisation combin&eacute;)</title>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Une autre cha&icirc;ne de format couramment utilis&eacute;e est le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Combined Log Format" (Format de journalisation combin&eacute;). Il s'utilise
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster comme suit :</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster \"%{User-agent}i\"" combined<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CustomLog log/access_log combined
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Ce format est identique au Common Log Format, avec deux champs
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster suppl&eacute;mentaires. Chacun de ces deux champs utilise la directive
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster commen&ccedil;ant par le caract&egrave;re "%" <code>%{<em>header</em>}i</code>,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster o&ugrave; <em>header</em> peut &ecirc;tre n'importe quel en-t&ecirc;te de requ&ecirc;te HTTP.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Avec ce format, le journal des acc&egrave;s se pr&eacute;sentera comme suit :</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /apache_pb.gif HTTP/1.0" 200 2326
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "http://www.example.com/start.html" "Mozilla/4.08 [en]
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (Win98; I ;Nav)"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Les champs suppl&eacute;mentaires sont :</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dl>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dt><code>"http://www.example.com/start.html"</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (<code>\"%{Referer}i\"</code>)</dt>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dd>L'en-t&ecirc;te "Referer" (sic) de la requ&ecirc;te HTTP. Il indique le site
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster depuis lequel le client pr&eacute;tend avoir lanc&eacute; sa requ&ecirc;te. (Ce doit &ecirc;tre
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster la page qui contient un lien vers <code>/apache_pb.gif</code> ou
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster inclut ce dernier fichier).</dd>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dt><code>"Mozilla/4.08 [en] (Win98; I ;Nav)"</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (<code>\"%{User-agent}i\"</code>)</dt>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <dd>L'en-t&ecirc;te User-Agent de la requ&ecirc;te HTTP. C'est une information
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d'identification que le navigateur du client envoie &agrave; propos
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de lui-m&ecirc;me.</dd>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </dl>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </section>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <section id="multiple">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <title>Journaux d'acc&egrave;s multiples</title>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Plusieurs journaux d'acc&egrave;s peuvent &ecirc;tre cr&eacute;&eacute;s en sp&eacute;cifiant tout
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster simplement plusieurs directives
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="mod_log_config">CustomLog</directive> dans le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster fichier de configuration. Par exemple, les directives suivantes vont
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cr&eacute;er trois journaux d'acc&egrave;s. Le premier contiendra les informations
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de base CLF, le second les informations du Referer, et le troisi&egrave;me
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster les informations sur le navigateur. Les deux derni&egrave;res directives
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="mod_log_config">CustomLog</directive> montrent
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster comment simuler les effets des directives <code>ReferLog</code> et
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <code>AgentLog</code>.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CustomLog logs/access_log common<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CustomLog logs/referer_log "%{Referer}i -&gt; %U"<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CustomLog logs/agent_log "%{User-agent}i"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Cet exemple montre aussi qu'il n'est pas obligatoire d'associer
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster une cha&icirc;ne de format &agrave; un alias au moyen de la directive
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="mod_log_config">LogFormat</directive>. Elle peut
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster &ecirc;tre d&eacute;finie directement dans la ligne de la directive
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="mod_log_config">CustomLog</directive>.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </section>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <section id="conditional">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <title>Journalisation conditionnelle</title>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Il est parfois souhaitable d'exclure certaines entr&eacute;es des journaux
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d'acc&egrave;s en fonction des caract&eacute;ristiques de la requ&ecirc;te du client. On
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster peut ais&eacute;ment accomplir ceci &agrave; l'aide des
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <a href="env.html">variables d'environnement</a>. Tout d'abord, une
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster variable d'environnement doit &ecirc;tre d&eacute;finie pour indiquer que la
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requ&ecirc;te remplit certaines conditions. Pour ceci, on utilise en g&eacute;n&eacute;ral
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster la directive <directive module="mod_setenvif">SetEnvIf</directive>,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster puis la clause <code>env=</code> de la directive
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <directive module="mod_log_config">CustomLog</directive> pour inclure
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ou exclure les requ&ecirc;tes pour lesquelles
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster la variable d'environnement est d&eacute;finie.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Quelques exemples :</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster # Marque les requ&ecirc;tes en provenance de l'interface loop-back<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster # Marque les requ&ecirc;tes pour le fichier robots.txt<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SetEnvIf Request_URI "^/robots\.txt$" dontlog<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster # Journalise toutes les autres requ&ecirc;tes<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CustomLog logs/access_log common env=!dontlog
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Autre exemple, imaginons l'enregistrement des requ&ecirc;tes en provenance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d'utilisateurs de langue anglaise dans un journal, et celles des autres
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster utilisateurs dans un autre journal.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SetEnvIf Accept-Language "en" english<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CustomLog logs/english_log common env=english<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CustomLog logs/non_english_log common env=!english
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Dans le contexte d'une mise en cache, il peut &ecirc;tre
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int&eacute;ressant de conna&icirc;tre l'efficacit&eacute; du cache. Pour y parvenir,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster on pourrait utiliser cette m&eacute;thode simple :</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SetEnv CACHE_MISS 1<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cache<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CustomLog logs/access_log common-cache
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p><module>mod_cache</module> va s'ex&eacute;cuter avant
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <module>mod_env</module>, et si son action est couronn&eacute;e de
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster succ&egrave;s, il d&eacute;livrera le contenu sans faire appel &agrave; ce dernier. Si
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster l'URL se trouve dans le cache, la valeur journalis&eacute;e sera alors
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <code>-</code>, tandis que dans le cas contraire elle sera
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <code>1</code>.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>En plus de la syntaxe <code>env=</code>, la directive <directive
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster module="mod_log_config">LogFormat</directive> supporte les
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster valeurs de journalisation conditionnelles bas&eacute;es sur le code de la
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster r&eacute;ponse HTTP :</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogFormat "%400,501{User-agent}i" browserlog<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogFormat "%!200,304,302{Referer}i" refererlog
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Dans le premier exemple, le <code>User-agent</code> sera
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster enregistr&eacute; si le code d'&eacute;tat HTTP est 400 ou 501. Dans le cas
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster contraire, c'est un caract&egrave;re "-" qui sera enregistr&eacute; &agrave; la place.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Dans le second exemple, le <code>Referer</code> sera enregistr&eacute; si
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster le code d'&eacute;tat HTTP n'est <strong>pas</strong> 200, 204, ou 302
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (remarquez le caract&egrave;re "!" avant les codes d'&eacute;tat).</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Bien que nous venions de montrer que la journalisation conditionnelle
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster est souple et tr&egrave;s puissante, cette m&eacute;thode de contr&ocirc;le du contenu des
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster journaux n'est pas la seule. Les fichiers journaux sont plus utiles
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster quand ils contiennent un enregistrement complet de l'activit&eacute; du serveur,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster et il est souvent plus ais&eacute; de simplement traiter &agrave; posteriori les fichiers
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster journaux pour supprimer les requ&ecirc;tes que vous ne voulez pas y voir
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster appara&icirc;tre.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </section>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster </section>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <section id="rotation">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <title>Rotation des journaux</title>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>M&ecirc;me dans le cas d'un serveur mod&eacute;r&eacute;ment sollicit&eacute;, la quantit&eacute;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster d'informations stock&eacute;es dans les fichiers journaux est tr&egrave;s importante.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Le fichier journal des acc&egrave;s grossit en g&eacute;n&eacute;ral d'1 Mo ou plus toutes
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster les 10000 requ&ecirc;tes. Il est par cons&eacute;quent n&eacute;cessaire d'effectuer
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster p&eacute;riodiquement la rotation des journaux en d&eacute;pla&ccedil;ant ou supprimant les
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster fichiers correspondants. On ne peut pas le faire pendant que le serveur
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster est en cours d'ex&eacute;cution, car Apache httpd va continuer &agrave; &eacute;crire dans l'ancien
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster fichier journal aussi longtemps qu'il le maintiendra ouvert.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster C'est pourquoi le serveur doit &ecirc;tre
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <a href="stopping.html">red&eacute;marr&eacute;</a> apr&egrave;s le d&eacute;placement ou la
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster suppression des fichiers journaux de fa&ccedil;on &agrave; ce qu'il en ouvre
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de nouveaux.</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <p>Avec un red&eacute;marrage <em>graceful</em>, on peut faire en sorte que le
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster serveur ouvre de nouveaux fichiers journaux sans perdre de connexions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster existantes ou en cours avec les clients. Cependant, pour que ceci soit
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster possible, le serveur doit continuer &agrave; &eacute;crire dans les anciens fichiers
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster journaux pendant qu'il termine le traitement des requ&ecirc;tes en cours.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Il est donc n&eacute;cessaire d'attendre un certain temps apr&egrave;s le r&eacute;d&eacute;marrage
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster avant d'effectuer tout traitement sur les fichiers journaux. Voici un
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sc&eacute;nario typique dans lequel on effectue une simple rotation des
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster journaux en compressant les anciens fichiers correspondants afin
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster de gagner de l'espace disque :</p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster <example>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster mv access_log access_log.old<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster mv error_log error_log.old<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster apachectl graceful<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sleep 600<br />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster gzip access_log.old error_log.old
</example>
<p>La section suivante pr&eacute;sente une autre m&eacute;thode de rotation des journaux
qui consiste &agrave; utiliser les
<a href="#piped">journaux redirig&eacute;s</a>.</p>
</section>
<section id="piped">
<title>Journaux redirig&eacute;s</title>
<p>Nous avons vu que le d&eacute;mon httpd &eacute;crivait les informations de
journalisation des erreurs et des acc&egrave;s dans un fichier journal ;
il peut aussi
rediriger ces informations vers un autre processus par l'interm&eacute;diaire d'un
tube de communication (pipe). Cette fonctionnalit&eacute; am&eacute;liore
consid&eacute;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&egrave;re pipe "<code>|</code>", suivi du nom de l'ex&eacute;cutable qui va
recueillir les entr&eacute;es de journal sur son entr&eacute;e
standard. Le serveur va
lancer le processus de redirection des journaux au moment du d&eacute;marrage du
serveur, et le relancera s'il cesse de fonctionner
pendant l'ex&eacute;cution du serveur.
(Nous d&eacute;nommons cette technique "journalisation
redirig&eacute;e fiable" gr&acirc;ce &agrave; cette derni&egrave;re fonctionnalit&eacute;.)</p>
<p>Les processus de journalisation redirig&eacute;e sont lanc&eacute;s par le processus
httpd parent, et h&eacute;ritent de l'UID de ce dernier. Cela signifie que les
programmes de journalisation dirig&eacute;e s'ex&eacute;cutent g&eacute;n&eacute;ralement en tant que
root. Il est donc tr&egrave;s important que ces programmes soient simples et
s&eacute;curis&eacute;s.</p>
<p>Un des grands avantages de la journalisation redirig&eacute;e est la possibilit&eacute;
d'effectuer la rotation des journaux sans avoir &agrave; red&eacute;marrer le serveur. Pour
accomplir cette t&acirc;che, le serveur HTTP Apache fournit un programme simple
appel&eacute; <program>rotatelogs</program>. Par exemple, pour une rotation des
journaux toutes les 24 heures, ajoutez ces lignes :</p>
<example>
CustomLog "|/usr/local/apache/bin/rotatelogs
/var/log/access_log 86400" common
</example>
<p>Notez que l'ensemble de la commande qui sera appel&eacute;e par le tube de
communication a &eacute;t&eacute; plac&eacute;e entre guillemets. Bien que cet exemple
concerne le journal des acc&egrave;s, la m&ecirc;me technique peut &ecirc;tre utilis&eacute;e
pour le journal des erreurs.</p>
<p>Il existe un autre programme de rotation des journaux similaire mais
beaucoup plus souple : il s'agit de "cronolog", non fourni par Apache,
mais disponible <a href="http://www.cronolog.org/">ici</a>.</p>
<p>Comme la journalisation conditionnelle, la journalisation redirig&eacute;e est
un outil tr&egrave;s puissant, mais si elle existe, il est pr&eacute;f&eacute;rable d'utiliser
une solution plus simple comme le traitement &agrave; posteriori hors ligne.</p>
<p>Par d&eacute;faut, le processus de redirection du journal est lanc&eacute; sans
invoquer un shell. Pour invoquer un shell, utilisez "<code>|$</code>"
au lieu de "<code>|</code>" (en g&eacute;n&eacute;ral avec <code>/bin/sh -c</code>)
:</p>
<example>
# Invocation de "rotatelogs" en utilisant un shell<br />
CustomLog "|$/usr/local/apache/bin/rotatelogs
/var/log/access_log 86400" common
</example>
<p>Il s'agissait du comportement par d&eacute;faut sous Apache 2.2. Selon
les sp&eacute;cificit&eacute;s du shell, ceci peut g&eacute;n&eacute;rer un processus shell
suppl&eacute;mentaire pour toute la dur&eacute;e du programme de redirection du
journal, et induire des probl&egrave;mes de gestion de signaux au cours du
red&eacute;marrage. La notation "<code>||</code>" est aussi support&eacute;e pour
des raisons de compatibilit&eacute; avec Apache 2.2 et est &eacute;quivalente &agrave;
"<code>|</code>".</p>
</section>
<section id="virtualhost">
<title>H&ocirc;tes virtuels</title>
<p>Lorsqu'un serveur poss&egrave;de plusieurs <a href
="vhosts/">h&ocirc;tes virtuels</a>, il existe de nombreuses solutions pour g&eacute;rer
les fichiers journaux. Par exemple, on peut utiliser les journaux comme
s'il s'agissait d'un serveur avec un seul h&ocirc;te. Il suffit pour cela de
placer les directives de journalisation en dehors des sections
<directive module="core" type="section">VirtualHost</directive> au niveau
du serveur principal, ce qui a pour effet de journaliser toutes les
requ&ecirc;tes dans le m&ecirc;me journal des acc&egrave;s et des erreurs. Cette technique
est cependant inappropri&eacute;e pour recueillir des statistiques sur chaque
h&ocirc;te virtuel individuellement.</p>
<p>Si des directives <directive module=
"mod_log_config">CustomLog</directive> ou
<directive module="core">ErrorLog</directive> sont plac&eacute;es dans une section
<directive module="core" type="section">VirtualHost</directive>, toutes les
requ&ecirc;tes ou erreurs pour cet h&ocirc;te virtuel ne seront enregistr&eacute;es que dans
le fichier sp&eacute;cifi&eacute;. Tout h&ocirc;te virtuel qui ne poss&egrave;de pas de directives de
journalisation verra ses requ&ecirc;tes enregistr&eacute;es dans le journal du serveur
principal. Cette technique est appropri&eacute;e pour un petit nombre d'h&ocirc;tes
virtuels, mais si ce nombre est important, elle peut devenir compliqu&eacute;e &agrave;
g&eacute;rer. En outre, des probl&egrave;mes de <a
href="vhosts/fd-limits.html">nombre de descripteurs
de fichiers insuffisant</a> peuvent rapidement appara&icirc;tre.</p>
<p>Il existe un tr&egrave;s bon compromis pour le journal des acc&egrave;s. En int&eacute;grant
les informations &agrave; propos de l'h&ocirc;te virtuel &agrave; la cha&icirc;ne de format du
journal, il est possible de journaliser tous les h&ocirc;tes dans le m&ecirc;me
journal, puis de s&eacute;parer ult&eacute;rieurement le journal en plusieurs journaux
individuels. Consid&eacute;rons par exemple les directives suivantes :</p>
<example>
LogFormat "%v %l %u %t \"%r\" %&gt;s %b"
comonvhost<br />
CustomLog logs/access_log comonvhost
</example>
<p>Le champ <code>%v</code> sert &agrave; enregistrer le nom de l'h&ocirc;te virtuel qui
traite la requ&ecirc;te. Un programme tel que <a
href="programs/other.html">split-logfile</a> peut ensuite &ecirc;tre utilis&eacute;
pour g&eacute;n&eacute;rer "&agrave; froid" autant de journaux que d'h&ocirc;tes virtuels.</p>
</section>
<section id="other">
<title>Autres fichiers journaux</title>
<related>
<modulelist>
<module>mod_logio</module>
<module>mod_log_config</module>
<module>mod_log_forensic</module>
<module>mod_cgi</module>
</modulelist>
<directivelist>
<directive module="mod_log_config">LogFormat</directive>
<directive module="mod_log_config">BufferedLogs</directive>
<directive module="mod_log_forensic">ForensicLog</directive>
<directive module="mpm_common">PidFile</directive>
<directive module="mod_cgi">ScriptLog</directive>
<directive module="mod_cgi">ScriptLogBuffer</directive>
<directive module="mod_cgi">ScriptLogLength</directive>
</directivelist>
</related>
<section>
<title>Enregistrement du nombre r&eacute;el d'octets envoy&eacute;s et re&ccedil;us</title>
<p>Le module <module>mod_logio</module> fournit deux champs
<directive module="mod_log_config">LogFormat</directive> suppl&eacute;mentaires
(%I et %O) qui permettent d'enregistrer le nombre r&eacute;el d'octets re&ccedil;us et
envoy&eacute;s sur le r&eacute;seau.</p>
</section>
<section>
<title>Journalisation de style investigation judiciaire (forensic logging)</title>
<p>Le module <module>mod_log_forensic</module> permet la journalisation
&agrave; des fins d'investigation judiciaire des requ&ecirc;tes des clients. La
journalisation est effectu&eacute;e avant et apr&egrave;s le traitement de la requ&ecirc;te,
qui fait donc l'objet de deux entr&eacute;es dans le journal. Le g&eacute;n&eacute;rateur de
journaux d'investigation est tr&egrave;s strict et ne permet aucune
personnalisation. C'est un inestimable outil de d&eacute;bogage et de s&eacute;curit&eacute;.</p>
</section>
<section id="pidfile">
<title>Fichier PID</title>
<p>Au d&eacute;marrage, le d&eacute;mon httpd Apache enregistre l'identifiant du
processus httpd parent dans le fichier <code>logs/httpd.pid</code>.
Le nom de ce fichier peut &ecirc;tre modifi&eacute; &agrave; l'aide de la directive
<directive module="mpm_common">PidFile</directive>. Cet identifiant
permet &agrave; l'administrateur de red&eacute;marrer et arr&ecirc;ter le d&eacute;mon en
envoyant des signaux au processus parent ; sous Windows, vous devez
utiliser l'option de ligne de commande -k. Pour plus de d&eacute;tails,
consulter la page <a href="stopping.html">Arr&ecirc;t et red&eacute;marrage</a>.</p>
</section>
<section id="scriptlog">
<title>Journal des scripts</title>
<p>Afin de faciliter le d&eacute;bogage, la directive
<directive module="mod_cgi">ScriptLog</directive> vous permet
d'enregistrer les entr&eacute;es et sorties des scripts CGI. Elle ne doit &ecirc;tre
utilis&eacute;e que pendant la phase de test, et en aucun cas sur un
serveur en production. Vous trouverez plus d'informations dans la
documentation du module <a href="mod/mod_cgi.html">mod_cgi</a>.</p>
</section>
<section id="rewritelog">
<title>Journal de r&eacute;&eacute;criture</title>
<p>Lorsqu'on utilise les fonctionnalit&eacute;s puissantes et complexes du
module <a href="mod/mod_rewrite.html">mod_rewrite</a>, il est presque
toujours n&eacute;cessaire d'utiliser la directive
<directive module="mod_rewrite">RewriteLog</directive> afin de
faciliter le d&eacute;bogage. Ce fichier journal fournit une analyse d&eacute;taill&eacute;e
de la transformation des requ&ecirc;tes par le moteur de r&eacute;&eacute;criture. Le niveau
de d&eacute;tail est contr&ocirc;l&eacute; par la directive
<directive module="mod_rewrite">RewriteLogLevel</directive>.</p>
</section>
</section>
</manualpage>