Serveur Apache HTTP Version 2.4
Description: | Journalisation des requ�tes envoy�es au serveur |
---|---|
Statut: | Base |
Identificateur�de�Module: | log_config_module |
Fichier�Source: | mod_log_config.c |
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.
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 :
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
:
| ||||||||||
%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. |
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.
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.
Quelques cha�nes de format couramment utilis�es :
"%h %l %u %t \"%r\" %>s %b"
"%v %h %l %u %t \"%r\" %>s %b"
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
\"%{User-agent}i\""
"%{Referer}i -> %U"
"%{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
:
"%{%d/%b/%Y %T}t.%{msec_frac}t %{%z}t"
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.
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.
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 :
ServerRoot
.|
", 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.
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�.
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
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 (%
).
LogFormat "%v %h %l %u %t \"%r\" %>s %b" serveur_virtuel_commun
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�.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" TransferLog logs/access_log