Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Access.log : fichier journal de Lighty

Cette page est ma traduction de la page de la documentation du module mod_accesslog.

1. Options

accesslog.use-syslog
envoyer l'accesslog à syslog
par défaut : disabled
accesslog.syslog-level
niveau de gravité pour la journalisation syslog
pour les valeurs numériques
par défaut : 6 (info)
accesslog.filename
nom du fichier d'accesslog si syslog n'est pas utilisé
si le nom commence par un '|', le reste du nom est considéré comme le nom d'un processus qui sera créé et donnera la sortie
par ex.
accesslog.filename = "/var/log/lighttpd.log" 

    $HTTP["host"] == "mail.example.org" {
      accesslog.filename = "|/usr/bin/cronolog"
    }

si vous avez plusieurs utilisateurs et que vous voulez que tous les journaux d'accès soient écrits, utilisez

accesslog.filename = "\|/usr/sbin/cronolog.."

par défaut : disabled
accesslog.format
par défaut : format du fichier journal

2. Format du fichier journal

%%
caractère %
%h
nom ou adresse de l'hôte à distance
retourne toujours l'adresse IP de l'hôte, jamais le nom.
Donc équivalent à %a, qui n'est pas implémenté
%u
utilisateur authentifié
%t
heure de fin de la demande
%r
demande en ligne
%s
code d'état (= %>s = %<s : compatibilité avec apache)
%b ou %B
octets envoyés pour le body
%i
Champ en-tête HTTP
attend le nom du champ qui doit être écrit entre accolades.
%e
environnement
%f
nom de fichier physique
%H
protocole de requête (HTTP/1.0, …)
%m
méthode de demande (GET, POST, …)
%o
`en-tête de réponse`_
attend le nom du champ qui doit être écrit entre accolades.
%p
port du serveur
%q
chaîne de requête
(%q n'est pas précédé d'un “?”, contrairement à Apache)
%T
temps utilisé en secondes
%U
URL de la requête
%v
nom du serveur
%V
nom d'hôte de la demande HTTP
%X
état de la connexion
%I
octets entrants
%O
octets sortants
  • %{StrFTime chaîne de format}t est supporté.

Non supportés :

Option Description
%aadresse à distance
%Aadresse locale
%Cchamp cookie (NS)
%lnom ident (non pris en charge)
%Dtemps utilisé en ms (non pris en charge)
%P(NS)
%n(NS)
%{name}C(NS)

Valeur par défaut :

accesslog.format = "%h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

La différence avec Apache est le deuxième champ qui vaut %V au lieu de %l.

3. En-tête de la réponse

Le module accesslog provides a special way to log content from the application in a accesslog file.

Pour noter l'identifiant de session dans le fichier de log accesslog il suffit de spécifier le nom de champ dans un %{…}o comme :

accesslog.format = "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-LIGHTTPD-SID}o\""

Chaque en-tête de réponse commençant par le préfixe X-LIGHTTPD- est supposé spécial pour lighttpd et ne sera pas envoyé au client.

Voici un exemple de l'utilisation de cette fonctionnalité :

<?php

session_start();

header("X-LIGHTTPD-SID: ".session_id());

?>
TEST

If you log to a pipe and have lighty chrooted the user running lighty will need access to “/bin/sh”.

4. Voir aussi