Formater les logs HTTP

Afin de personnaliser le format des logs d’accès HTTP, vous devez au préalable choisir un nom pour votre fichier de log personnalisé. Pour cela, renseignez un nom de votre choix dans le champ Nom de fichier dans l’onglet Logs de votre site (menu Web > Sites).

Ajouter un site : logs HTTP
Ajouter un site : logs HTTP
Ce fichier sera stocké dans le répertoire $HOME/admin/logs/http/.

La personnalisation du format des lignes de log s’effectue dans le champ Format. Ce champ accepte les chaînes de caractères ainsi qu’un certain nombre de variables listées ci-après. La syntaxe à respecter est {nom_de_variable} pour voir apparaître sa valeur dans les lignes de logs d’accès.

Le format par défaut est le suivant :

{request_hostname} {client_ip} - - [{completion_date:{%d/%b/%Y:%H:%M:%S %z}}] {request} {status} {response_size} {referer} {user_agent}

Les lignes de logs sont affichées de cette manière :

blog.alwaysdata.com 198.51.100.42 - - [17/Jul/2018:15:05:30 +0200] "GET / HTTP/1.1" 200 10975 "https://www.alwaysdata.com/fr/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"

Variables disponibles

VariablesDescription
{client_ip}Adresse IP du client ayant émis la requête
{completion_date}Date à laquelle la requête a été servie 1
{duration}Temps pris pour servir la requête en secondes
{peer_ip}Adresse IP du pair ayant envoyé la requête (proxy ou client original le cas échéant)
{protocol}Mécanisme du protocole de la requête (http, https, ws)
{referer}Valeur de l’en-tête Referer transmis par la requête
{request}Première ligne de la requête
{request_header}En-têtes de la requête
{request_hostname}Nom d’hôte demandé dans la requête
{request_method}Méthode utilisée dans la requête (GET, POST, …)
{request_path}Chemin demandé dans la requête, incluant la chaîne d’interrogations
{request_protocol}Protocole utilisé dans la requête (HTTP/1.1, HTTP/2, …)
{request_time}Date à laquelle la requête a été reçue 1
{response_header}En-têtes de la réponse
{response_size}Taille de la réponse en bytes, en-têtes HTTP exclus
{status}Code de status de la réponse (200, 301, 404, 500, …)
{user_agent}Valeur de l’en-tête User-Agent transmis par la requête

  1. Peut être formatée en suivant la syntaxe strftime. Exemples : {completion_date:{%d/%b/%Y}} → 16/Jul/2018, {completion_date:{%H:%M:%S}} → 12:04:07 ↩︎