Apache: Configurer le «débogage LogLevel» pour certains modules uniquement?

13

Je veux déboguer certains problèmes d'authentification et d'autorisation sur mon serveur Web, en particulier avec mod_authnz_ldap et d'autres modules mod_auth *.

J'ai donc mis LogLevel debugdans la configuration Apache, globalement ou pour un seul VirtualHost. Cela me fournit des informations utiles de mod_authnz_ldap, mais cela génère également une tonne de bruit provenant des modules SSL. Voir ci-dessous pour un exemple.

Existe-t-il un moyen de réduire le niveau de journalisation pour ssl_engine *, tout en conservant le niveau de journalisation pour mod_authnz_ldap?

Oui, je pourrais exclure les lignes en utilisant quelque chose comme grep -v ssl_engine logfile, mais je veux également exclure ces données supplémentaires de certains autres outils d'analyse syslog. Je préfère réduire la journalisation depuis la source, au lieu de l'exclure à la destination.

[Tue Jul 06 16:55:31 2010] [debug] ssl_engine_io.c(1830): | 0100: 12 23 e7 0f 45 1f 1f d3-ed 12 f8 12 1f a9 90 85  .+..(........... |
[Tue Jul 06 16:55:31 2010] [debug] mod_authnz_ldap.c(474): [client 10.10.10.123] [96991] auth_ldap authenticate: accepting joe
[Tue Jul 06 16:55:31 2010] [debug] mod_authnz_ldap.c(730): [client 10.10.10.123] [96991] auth_ldap authorise: require group: authorisation successful (attribute memberUid) [Comparison true (cached)][Compare True]
[Tue Jul 06 17:02:17 2010] [debug] ssl_engine_io.c(1830): | 0023: 23 ff 29 5a 4b bd 4c e6-bc 36 22 9c c3 22 c2 4b  ..)ZK.L..6u....K |
[Tue Jul 06 17:02:17 2010] [debug] ssl_engine_io.c(1830): | 0023: 23 ff 29 5a 4b bd 4c e6-bc 22 75 9c c3 b6 22 4b  ..)blahblah|
Stefan Lasiewski
la source

Réponses:

16

Je réponds à ma propre question, Jeopardy Style.

Apache 2.3

C'est possible dans Apache 2.3.

Apache> Serveur HTTP> Documentation> Version 2.4> La journalisation par module indique:

Journalisation par module

La directive LogLevel vous permet de spécifier un niveau de gravité de journal sur une base par module. De cette façon, si vous dépannez un problème avec un seul module particulier, vous pouvez augmenter son volume de journalisation sans obtenir également les détails des autres modules qui ne vous intéressent pas. Ceci est particulièrement utile pour des modules tels que mod_proxy ou mod_rewrite où vous voulez connaître les détails de ce qu'il essaie de faire.

Pour ce faire, spécifiez le nom du module dans votre directive LogLevel:

LogLevel info rewrite:trace5

Cela définit le LogLevel principal sur info, mais le monte à trace5 pour mod_rewrite.

Cela remplace les directives de journalisation par module, telles que RewriteLog, qui étaient présentes dans les versions antérieures du serveur.

Présentation des nouvelles fonctionnalités d'Apache HTTP Server 2.4 :

Configuration de LogLevel par module et par répertoire Le LogLevel peut désormais être configuré par module et par répertoire. De nouveaux niveaux trace1 à trace8 ont été ajoutés au-dessus du niveau du journal de débogage.

Voir également la discussion sur la liste de diffusion Apache-dev .

Apache 2.2 et versions antérieures:

Non, ce n'est actuellement pas possible dans Apache 2.2. Le manuel sur HTTP Server> Documentation> Version 2.2> Modules "Directive LogLevel" ne montre pas cette option. La seule option actuellement consiste à "grep -v" les lignes incriminées.

Apache 2.4 (proposé au moment de la rédaction):

Cela sera inclus avec Apache 2.4. Les documents Apache dans le coffre (2.3) disent actuellement:

Compatibilité: la configuration par module et par répertoire est disponible dans Apache HTTP Server 2.3.6 et versions ultérieures

Et:

La spécification d'un niveau sans nom de module réinitialise le niveau de tous les modules à ce niveau. La spécification d'un niveau avec un nom de module définit uniquement le niveau de ce module. Il est possible d'utiliser le nom du fichier source du module, l'identifiant du module ou l'identifiant du module avec le _module de fin omis comme spécification du module. Cela signifie que les trois spécifications suivantes sont équivalentes:

LogLevel info ssl:warn
LogLevel info mod_ssl.c:warn
LogLevel info ssl_module:warn
Stefan Lasiewski
la source