Apache: ¿Configurar "LogLevel debug" solo para ciertos módulos?

13

Quiero depurar algunos problemas de autenticación y autorización en mi servidor web, particularmente con mod_authnz_ldap y otros módulos mod_auth *.

Así que configuré LogLevel debugla configuración de Apache, ya sea globalmente o para un solo VirtualHost. Esto me proporciona información útil de mod_authnz_ldap, pero también arroja una tonelada de ruido de los módulos SSL. Vea a continuación un ejemplo.

¿Hay alguna manera de reducir el LogLevel para ssl_engine *, mientras se mantiene el loglevel para mod_authnz_ldap?

Sí, podría excluir las líneas usando algo como grep -v ssl_engine logfile, pero también quiero excluir estos datos adicionales de algunas otras herramientas de análisis de syslog. Prefiero reducir el registro desde la fuente, en lugar de excluirlo en el destino.

[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
fuente

Respuestas:

16

Estoy respondiendo mi propia pregunta, Jeopardy Style.

Apache 2.3

Esto es posible en Apache 2.3.

Apache> Servidor HTTP> Documentación> Versión 2.4> El registro por módulo dice:

Registro por módulo

La directiva LogLevel le permite especificar un nivel de gravedad de registro por módulo. De esta manera, si está solucionando un problema con un solo módulo en particular, puede aumentar su volumen de registro sin obtener también los detalles de otros módulos que no le interesan. Esto es particularmente útil para módulos como mod_proxy o mod_rewrite donde desea conocer detalles sobre lo que está tratando de hacer.

Haga esto especificando el nombre del módulo en su directiva LogLevel:

LogLevel info rewrite:trace5

Esto establece el LogLevel principal en información, pero lo convierte en trace5 para mod_rewrite.

Esto reemplaza las directivas de registro por módulo, como RewriteLog, que estaban presentes en versiones anteriores del servidor.

La descripción general de las nuevas características en Apache HTTP Server 2.4 dice:

Configuración de LogLevel por módulo y por directorio El LogLevel ahora se puede configurar por módulo y por directorio. Se han agregado nuevos niveles trace1 a trace8 por encima del nivel de registro de depuración.

Vea también la discusión en la lista de correo de Apache-dev .

Apache 2.2 y anteriores:

No, esto no es posible actualmente en Apache 2.2. El manual en Servidor HTTP> Documentación> Versión 2.2> Módulos "Directiva de nivel de registro" no muestra esta opción. La única opción actualmente es "grep -v" las líneas ofensivas.

Apache 2.4 (propuesto al momento de escribir):

Esto se incluirá con Apache 2.4. Los documentos de Apache en el tronco (2.3) actualmente dicen:

Compatibilidad: la configuración por módulo y por directorio está disponible en Apache HTTP Server 2.3.6 y versiones posteriores

Y:

Al especificar un nivel sin un nombre de módulo, se restablecerá el nivel de todos los módulos a ese nivel. Especificar un nivel con un nombre de módulo establecerá el nivel solo para ese módulo. Es posible utilizar el nombre del archivo fuente del módulo, el identificador del módulo o el identificador del módulo con el _module final omitido como especificación del módulo. Esto significa que las siguientes tres especificaciones son equivalentes:

LogLevel info ssl:warn
LogLevel info mod_ssl.c:warn
LogLevel info ssl_module:warn
Stefan Lasiewski
fuente