Comment enregistrer la durée des requêtes des robots dans les journaux Apache ?

L'équipe Citead, mis à jour le

En bref. Ajoutez %D à un LogFormat Apache et référencez son alias dans CustomLog pour enregistrer la durée des requêtes en microsecondes.

Définition : La durée d’une requête dans un journal d’accès Apache correspond au temps qu’Apache met à traiter cette requête. Un format de journal personnalisé peut enregistrer cette durée en microsecondes avec %D, aux côtés de la requête et de son en-tête User-Agent, pour analyser les requêtes des robots.

Points clés

  • En octobre 2026, le guide des journaux d’Apache décrit LogFormat pour sélectionner le contenu des journaux et CustomLog pour choisir leur destination et leur format.
  • La documentation de mod_log_config définit %D en microsecondes, %T en secondes et %{ms}T en millisecondes.
  • La documentation d’apachectl présente configtest pour vérifier la syntaxe de la configuration et graceful pour redémarrer en préservant les connexions ouvertes.

Quel format de journal personnalisé enregistre la durée ?

Un format de journal est une chaîne dont les directives précédées du signe pour cent sont remplacées par les valeurs de la requête. Le guide des journaux d’Apache présente le format combiné (Combined Log Format), qui comprend la ligne de requête, le code d’état de la réponse, sa taille et les en-têtes Referer et User-Agent. Cette configuration adaptée y ajoute un champ de durée avec un libellé :

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" duration_us=%D" combined_timed
CustomLog "logs/access_timed_log" combined_timed

combined_timed est l’alias du format utilisé par CustomLog. Le chemin relatif du fichier est résolu à partir de ServerRoot, le répertoire racine du serveur Apache. Les chaînes littérales comme duration_us= apparaissent dans le journal, et les guillemets échappés conservent les champs de requête et d’en-tête entre guillemets.

Le même guide décrit User-Agent comme une information d’identification déclarée par le client. L’exemple enregistre toutes les requêtes qui parviennent à ce journal ; l’analyse des robots peut ensuite sélectionner les enregistrements à partir de cet en-tête. Apache documente l’utilisation de plusieurs directives CustomLog pour écrire dans plusieurs journaux d’accès : ajouter cette destination aux côtés d’une directive existante crée donc un journal supplémentaire.

Quel champ de durée utiliser dans le format ?

La documentation des champs de durée définit %{UNIT}T, où ms, us et s sélectionnent respectivement les millisecondes, les microsecondes et les secondes. La notation %T avec une unité est disponible à partir d’Apache HTTP Server 2.4.13. %{us}T donne le même résultat que %D ; %{s}T donne le même résultat que %T.

Pour les millisecondes, la partie de l’exemple consacrée à la durée devient :

duration_ms=%{ms}T

Le libellé du champ change avec l’unité choisie. La documentation précise aussi que %D et %T utilisent par défaut la requête initiale en cas de redirection interne ; %>s sélectionne le code d’état de la réponse finale.

Comment appliquer et vérifier la configuration ?

Le manuel d’apachectl décrit ce test de syntaxe :

apachectl configtest

Il renvoie Syntax Ok ou les détails d’une erreur de syntaxe. Après une vérification réussie, la commande documentée pour redémarrer en préservant les connexions est :

apachectl graceful

Cette commande vérifie également la syntaxe de la configuration avant le redémarrage. Les connexions existantes restent ouvertes, et les anciens fichiers journaux peuvent rester ouverts temporairement.

Pour les sites configurés en hôtes virtuels (virtual hosts), c’est-à-dire avec des configurations de site distinctes au sein d’un serveur, les consignes de journalisation des hôtes virtuels d’Apache précisent qu’une directive CustomLog dans une section <VirtualHost> envoie les requêtes de cet hôte vers le fichier indiqué. La vérification d’une nouvelle requête comprend donc celle de la destination du journal configurée pour l’hôte concerné.

Termes associés

Questions fréquentes

Définir un alias de format déclenche-t-il l’écriture du journal ?

La documentation de LogFormat précise que la définition d’un alias ne fait que définir cet alias. Vous devez le référencer dans CustomLog pour l’utiliser avec la destination présentée ci-dessus.

L’horodatage existant enregistre-t-il déjà la durée ?

Le guide des journaux d’Apache définit %t comme l’heure de réception de la requête. Pour enregistrer à ses côtés le temps écoulé pour traiter la requête, vous pouvez ajouter le champ de durée présenté ci-dessus.

Sources

  1. Apache Software Foundation, « Log Files », sans date
  2. Apache Software Foundation, « Apache Module mod_log_config », sans date
  3. Apache Software Foundation, « apachectl - Apache HTTP Server Control Interface », sans date

Vérifiez comment une page se lit pour les moteurs de réponse. Ouvrir l’analyseur de score GEO

Testez une page et voyez quoi corriger en premier

L'analyse prend en général moins de 10 secondes et ne demande pas de compte.

400 000+ pages notées dans le benchmark public