<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_log_config

Langues Disponibles:  en  |  fr  |  ja  |  ko  |  tr 

Description:Journalisation des requ�tes envoy�es au serveur
Statut:Base
Identificateur�de�Module:log_config_module
Fichier�Source:mod_log_config.c

Sommaire

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.

Ce module fournit trois directives : TransferLog cr�e un fichier journal, LogFormat d�finit un format personnalis�, et CustomLog 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 TransferLog et CustomLog dans chaque serveur.

Directives

Sujets

Voir aussi

top

Formats de journaux personnalis�s

L'argument format des directives LogFormat et CustomLog 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.

Les caract�ristiques de la requ�te en elle-m�me sont journalis�es en ins�rant des directives "%" dans la cha�ne de format, celles-ci �tant remplac�es dans le fichier journal par certaines valeurs comme suit :

Cha�ne de format Description
%% Le signe "pourcentage"
%a L'adresse IP distante (voir le module mod_remoteip).
%{c}a Adresse IP distante de la connexion(voir le module mod_remoteip)
%A L'adresse IP locale
%B La taille de la r�ponse en octets, en excluant les en-t�tes HTTP.
%b La taille de la r�ponse en octets, en excluant les en-t�tes HTTP. Au format CLF , c'est � dire un '-' � la place d'un 0 lorsqu'aucun octet n'est renvoy�.
%{NOMVAR}C Le contenu du cookie NOMVAR dans la requ�te envoy�e au serveur. Seuls les cookies version 0 sont pleinement support�s.
%D Le temps mis � servir la requ�te, en microsecondes.
%{NOMVAR}e Le contenu de la variable d'environnement NOMVAR
%f Nom de fichier
%h Serveur distant. Contiendra l'adresse IP si la directive HostnameLookups est d�finie � Off, 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 documentation de Require host.
%H Le protocole de la requ�te
%{NOMVAR}i Le contenu des lignes d'en-t�te NOMVAR: dans la requ�te envoy�e au serveur. Ces en-t�tes sont ajout�s par d'autres modules (par exemple mod_headers). 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 mod_setenvif pour copier l'en-t�te dans une variable d'environnement interne et journaliser sa valeur via le champ %{VARNAME}e d�crit plus haut.
%k Nombre de requ�tes persistantes en cours pour cette connexion. Interessant si la directive KeepAlive 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).
%l Le nom de connexion distant (en provenance d'identd, si disponible). Affiche un tiret, sauf si mod_ident est pr�sent et si IdentityCheck est � On.
%L 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)
%m La m�thode de la requ�te
%{NOMVAR}n Le contenu de la note NOMVAR en provenance d'un autre module.
%{NOMVAR}o Le contenu de la ligne d'en-t�te NOMVAR: de la r�ponse.
%p Le port canonique du serveur servant la requ�te
%{format}p 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 canonical, local, ou remote.
%P Le num�ro de processus du processus enfant qui a servi la requ�te.
%{format}P Le num�ro de processus ou le num�ro de thread du processus enfant qui a servi la requ�te. Les formats valides sont pid, tid, et hextid. hextid n�cessite APR version 1.2.0 ou sup�rieure.
%q La cha�ne d'arguments (pr�fix�e par un ? si une cha�ne d'arguments existe, sinon une cha�ne vide)
%r La premi�re ligne de la requ�te
%R Le gestionnaire qui g�n�re la r�ponse (s'il y en a un).
%s Statut. Pour les requ�tes redirig�es en interne, il s'agit du statut de la requ�te *originale* --- %>s pour la derni�re.
%t Date � laquelle la requ�te a �t� re�ue (au format anglais standard)
%{format}t La date, sous la forme sp�cifi�e par format, qui devrait �tre au format �tendu strftime(3) (�ventuellement localis�). Si le format commence par begin: (valeur par d�faut), la date est extraite au d�but du traitement de la requ�te ; s'il commence par end:, 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 strftime(3), les formats suivants sont aussi disponibles :
secnombre de secondes depuis Epoch
msecnombre de millisecondes depuis Epoch
usecnombre de microsecondes depuis Epoch
msec_fracfraction de milliseconde
usec_fracfraction de microseconde
Ces symboles ne peuvent pas �tre combin�s entre eux ou avec un formatage strftime(3) dans la m�me cha�ne de format. Par contre, vous pouvez utiliser plusieurs symboles %{format}t.
%T Le temps mis pour servir la requ�te, en secondes.
%u L'utilisateur distant (en provenance d'auth ; peut �tre faux si le statut de retour (%s) est 401).
%U Le chemin de la requ�te, � l'exclusion de toute cha�ne d'arguments.
%v Le nom canonique du serveur qui a servi la requ�te, d�fini par la directive ServerName.
%V La nom du serveur en tenant compte de la d�finition de la directive UseCanonicalName.
%X Statut de la connexion lorsque la r�ponse a �t� renvoy�e :
X = connexion abandonn�e avant l'envoi de la r�ponse.
+ = la connexion peut rester ouverte apr�s l'envoi de la r�ponse.
- = la connexion sera ferm�e apr�s l'envoi de la r�ponse.
%I 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 mod_logio.
%O Nombre d'octets envoy�s, y compris les en-t�tes, ne peut �tre nul. N�cessite l'activation de mod_logio.
%S Nombre d'octets transmis (en �mission et r�ception), y compris corps et en-t�tes de requ�te. Ce nombre ne peut pas �tre nul, et il correspond � la combinaison des formats %I et %O. mod_logio doit �tre charg� pour pouvoir utiliser ce format.
%{VARNAME}^ti Le contenu de VARNAME: dans les param�tres de la requ�te envoy�e au serveur.
%{VARNAME}^to Le contenu de VARNAME: dans les param�tres de la r�ponse envoy�e par le serveur.

Modificateurs

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, "%400,501{User-agent}i" n'enregistrera l'en-t�te User-agent que dans le cas d'une erreur 400 ou 501. Avec les autres codes de statut, c'est la cha�ne litt�rale "-" qui sera enregistr�e. La liste de codes peut �tre pr�c�d�e d'un "!" pour inverser la condition : "%!200,304,302{Referer}i" enregistre l'en-t�te Referer pour toutes les requ�tes qui ne renvoient pas un des trois codes sp�cifi�s.

Les modificateurs "<" et ">" peuvent �tre utilis�s pour les requ�tes qui ont �t� redirig�es en interne afin de choisir si c'est respectivement la requ�te originale ou finale qui doit �tre consult�e. Par d�faut, les directives %s, %U, %T, %D, et %r consultent la requ�te originale, alors que toutes les autres consultent la requ�te finale. Ainsi, par exemple, on peut utiliser %>s pour enregistrer le statut final de la requ�te, et %<u pour enregistrer l'utilisateur authentifi� � l'origine pour une requ�te redirig�e en interne vers une ressource sans authentification.

Quelques Notes

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 %r, %i et %o doivent �tre �chapp�s � l'aide des s�quences \xhh, o� hh est le code hexad�cimal du caract�re sp�cial. Comme exceptions � cette r�gle, les caract�res " et \ doivent �tre �chapp�s par un anti-slash, et tous les "blancs" doivent �tre �crits selon leur notation de style C (\n, \t, 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.

A la diff�rence de la version 1.3, depuis httpd 2.0, les cha�nes de format %b et %B 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 %O fourni par mod_logio, enregistrera le nombre r�el d'octets envoy�s sur le r�seau.

Note : mod_cache est impl�ment� en tant que gestionnaire basique et non en tant que gestionnaire standard. C'est pourquoi la cha�ne de format %R ne renverra pas d'information � propos du gestionnaire lorsqu'une mise en cache de contenu entre en jeu.

Exemples

Quelques cha�nes de format couramment utilis�es :

Format de journal courant (CLF)
"%h %l %u %t \"%r\" %>s %b"
Format de journal courant avec un serveur virtuel
"%v %h %l %u %t \"%r\" %>s %b"
Format de journal NCSA �tandu/combin�
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
Format de journal de la page qui contient le lien vers la page concern�e (Referer)
"%{Referer}i -> %U"
Format de journal de l'agent (Navigateur)
"%{User-agent}i"

Vous pouvez utiliser plusieurs fois la directive %{format}t pour construire un format de temps utilisant les symboles de format �tendus tels que msec_frac :

Format de temps prenant en compte les milisecondes
"%{%d/%b/%Y %T}t.%{msec_frac}t %{%z}t"
top

Consid�rations concernant la s�curit�

Voir le document conseils � mati�re de s�curit� 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.

top

BufferedLogs Directive

Description:Enregistre les entr�es du journal dans un tampon en m�moire avant de les �crire sur disque
Syntaxe:BufferedLogs On|Off
D�faut:BufferedLogs Off
Contexte:configuration du serveur
Statut:Base
Module:mod_log_config

Lorsque la directive BufferedLogs est � "on", mod_log_config 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.

Cette directive doit �tre utilis�e avec pr�cautions car un crash peut provoquer la perte de donn�es de journalisation.
top

CustomLog Directive

Description:D�finit le nom et le format du fichier journal
Syntaxe:CustomLog fichier|pipe format|alias [env=[!]variable-environnement| expr=expression]
Contexte:configuration du serveur, serveur virtuel
Statut:Base
Module:mod_log_config

La directive CustomLog 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.

Le premier argument, qui sp�cifie l'emplacement o� les journaux seront �crits, accepte deux types de valeurs :

fichier
Un nom de fichier, relatif au r�pertoire d�fini par la directive ServerRoot.
pipe
Le caract�re pipe "|", suivi du chemin vers un programme qui recevra les informations de la journalisation sur son entr�e standard. Voir les notes � propos de la journalisation redirig�e pour plus d'informations.

S�curit� :

Si les journaux sont redirig�s vers un programme, ce dernier s'ex�cutera sous l'utilisateur qui a d�marr� httpd. Ce sera l'utilisateur root si le serveur a �t� d�marr� par root ; v�rifiez que le programme est s�curis�.

Note

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.

Le second argument permet de d�finir ce qui va �tre �crit dans le fichier journal. Il peut contenir soit un alias pr�d�fini par une directive LogFormat, soit une cha�ne de format explicite comme d�crit dans la section formats de journaux.

Par exemple, les deux blocs de directives suivants produisent le m�me effet :

# Journal personnalis� avec alias de format
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common

# Journal personnalis� avec cha�ne de format explicite
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"

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 'env=!nom', la condition peut �tre la pr�sence ou l'absence d'une variable particuli�re dans l'environnement du serveur. Dans le cas d'une clause 'expr=expression', la condition consiste en une expression 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.

Les variables d'environnement peuvent �tre d�finies au niveau de chaque requ�te en utilisant les modules mod_setenvif et/ou mod_rewrite. 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 :

SetEnvIf Request_URI \.gif$ gif-image
CustomLog gif-requests.log common env=gif-image
CustomLog nongif-requests.log common env=!gif-image

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

SetEnvIf Referer example\.com localreferer
CustomLog referer.log referer env=!localreferer
top

LogFormat Directive

Description:D�crit un format utilisable dans un fichier journal
Syntaxe:LogFormat format|alias [alias]
D�faut:LogFormat "%h %l %u %t \"%r\" %>s %b"
Contexte:configuration du serveur, serveur virtuel
Statut:Base
Module:mod_log_config

Cette directive permet de sp�cifier le format du fichier journal des acc�s.

La directive LogFormat 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 TransferLog ult�rieures. L'argument unique peut contenir un format explicite comme d�crit dans la section formats de journaux personnalis�s ci-dessus. Il peut aussi contenir un alias faisant r�f�rence � un format de journal pr�d�fini par une directive LogFormat comme d�crit plus loin.

Sous sa seconde forme, la directive LogFormat associe un format explicite � un alias. Cet alias peut ensuite s'utiliser dans les directives LogFormat ou CustomLog ult�rieures, ce qui �vite d'avoir � r�p�ter l'ensemble de la cha�ne de format. Une directive LogFormat qui d�finit un alias ne fait rien d'autre -- c'est � dire qu'elle ne fait que 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 TransferLog ult�rieures. En outre, la directive LogFormat ne peut pas utiliser un alias pour en d�finir un autre. Notez que l'alias ne doit pas contenir de caract�re pourcent (%).

Exemple

LogFormat "%v %h %l %u %t \"%r\" %>s %b" serveur_virtuel_commun
top

TransferLog Directive

Description:Sp�cifie l'emplacement d'un fichier journal
Syntaxe:TransferLog fichier|pipe
Contexte:configuration du serveur, serveur virtuel
Statut:Base
Module:mod_log_config

Cette directive poss�de exactement les m�mes arguments et produit les m�mes effets que la directive CustomLog, � 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 LogFormat 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�.

Exemple

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
TransferLog logs/access_log

Langues Disponibles:  en  |  fr  |  ja  |  ko  |  tr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.