Je voudrais ajouter le nom du vhost dans mon ErrorLog, puis le diriger vers un programme que j'ai écrit.
Est-il possible d'écrire le format du journal des erreurs personnalisé comme c'est le cas avec le journal Access?
Je voudrais ajouter le nom du vhost dans mon ErrorLog, puis le diriger vers un programme que j'ai écrit.
Est-il possible d'écrire le format du journal des erreurs personnalisé comme c'est le cas avec le journal Access?
Réponses:
Pour la tuyauterie, voir la directive ErrorLog et les entrées du manuel officiel de Piped Logs qui l'expliquent assez bien.
Obtenir un format de journal des erreurs personnalisé est plus difficile. Vous pouvez facilement personnaliser le journal d'accès avec LogFormat
mais il n'y a rien intégré pour modifier le format du journal des erreurs. J'ai rencontré CGI :: Carp qui est un module Perl pour la sortie dans le journal des erreurs. Enfin, il y a toujours une modification directe du code source d'Apache en fonction de la façon dont vous voulez cette fonctionnalité.
Dans Apache 2.2, vous ne pouvez pas changer facilement le format de error_log - voir http://httpd.apache.org/docs/2.2/logs.html#errorlog .
Apache 2.4 ajoute ce support. Voir http://httpd.apache.org/docs/2.4/logs.html#errorlog .
Avec Apache 2.4, vous pouvez utiliser la ErrorLogFormat
directive.
Syntaxe: ErrorLogFormat [connection|request] format
Exemple simple
ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"
Exemple (format par défaut pour les MPM filetés)
ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
Exemple (similaire au format 2.2.x)
ErrorLogFormat "[%t] [%l] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
Exemple avancé avec des ID de journal de demande / connexion
ErrorLogFormat "[%{uc}t] [%-m:%-l] [R:%L] [C:%{C}L] %7F: %E: %M"
ErrorLogFormat request "[%{uc}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T"
ErrorLogFormat request "[%{uc}t] [R:%L] UA:'%+{User-Agent}i'"
ErrorLogFormat request "[%{uc}t] [R:%L] Referer:'%+{Referer}i'"
ErrorLogFormat connection "[%{uc}t] [C:%{c}L] local\ %a remote\ %A"
Source: directive ErrorLogFormat
%a
apparaîtrait vierge? C'est censé être l'adresse IP du client. J'ai posté une question à ce sujet.
Vous recherchez probablement mod_log_debug .