Est-il possible de créer un journal des erreurs personnalisé dans Apache 2.2?

11

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?

JohnT
la source
Selon votre configuration, vous pouvez avoir un journal des erreurs pour chacun de vos hôtes virtuels. Ce n'est pas la même chose qu'un fichier journal unifié analysable, mais c'est quelque chose.
muffinista

Réponses:

7

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 LogFormatmais 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é.

uesp
la source
6

Avec Apache 2.4, vous pouvez utiliser la ErrorLogFormatdirective.

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

nul
la source
Quelqu'un peut-il deviner pourquoi %aapparaîtrait vierge? C'est censé être l'adresse IP du client. J'ai posté une question à ce sujet.
Bob Stein
1

Vous recherchez probablement mod_log_debug .

Piotr Kieszczyński
la source
Bien que vous ayez raison, il serait préférable d'inclure les parties essentielles de la réponse sur le lien ici, au cas où le lien serait mort ou déplacé.
HopelessN00b