Apache: Configure “LogLevel debug” apenas para determinados módulos?

10

Eu quero depurar alguns autenticação & problemas de autorização no meu servidor, particularmente com mod_authnz_ldap e outros módulos mod_auth *.

Por isso, defino LogLevel debug na configuração do Apache, globalmente ou para um único VirtualHost. Isso me fornece informações úteis do mod_authnz_ldap, mas também elimina uma tonelada de ruído dos módulos SSL. Veja abaixo um exemplo.

Existe uma maneira de reduzir o LogLevel para o ssl_engine *, enquanto ainda mantém o nível de log do mod_authnz_ldap?

Sim, eu poderia excluir as linhas usando algo como grep -v ssl_engine logfile , mas também quero excluir esses dados extras de algumas outras ferramentas de análise de syslog. Eu preferiria reduzir o log da fonte, em vez de excluí-lo no 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|
    
por Stefan Lasiewski 07.07.2010 / 02:18

1 resposta

13

Estou respondendo a minha própria pergunta, Jeopardy Style.

Apache 2.3

Isso é possível no Apache 2.3.

Apache > Servidor HTTP > Documentação > Versão 2.4 > O registro por módulo diz:

Per-module logging

The LogLevel directive allows you to specify a log severity level on a per-module basis. In this way, if you are troubleshooting a problem with just one particular module, you can turn up its logging volume without also getting the details of other modules that you're not interested in. This is particularly useful for modules such as mod_proxy or mod_rewrite where you want to know details about what it's trying to do.

Do this by specifying the name of the module in your LogLevel directive:

LogLevel info rewrite:trace5

This sets the main LogLevel to info, but turns it up to trace5 for mod_rewrite.

This replaces the per-module logging directives, such as RewriteLog, that were present in earlier versions of the server.

Visão geral dos novos recursos do Apache HTTP Server 2.4 , por exemplo:

Per-module and per-directory LogLevel configuration The LogLevel can now be configured per module and per directory. New levels trace1 to trace8 have been added above the debug log level.

Veja também a discussão na lista de discussão do Apache-dev .

Apache 2.2 & Anteriormente:

Não, isso não é possível no Apache 2.2. O manual no servidor HTTP > Documentação > Versão 2.2 > Os módulos "Diretiva LogLevel" não mostram essa opção. A única opção atualmente é "grep -v" as linhas ofensivas.

Apache 2.4 (proposto no momento da escrita):

Isso será incluído no Apache 2.4. Os documentos do Apache em o tronco (2.3) diz atualmente:

Compatibility: Per-module and per-directory configuration is available in Apache HTTP Server 2.3.6 and later

E:

Specifying a level without a module name will reset the level for all modules to that level. Specifying a level with a module name will set the level for that module only. It is possible to use the module source file name, the module identifier, or the module identifier with the trailing _module omitted as module specification. This means the following three specifications are equivalent:

LogLevel info ssl:warn
LogLevel info mod_ssl.c:warn
LogLevel info ssl_module:warn
    
por 07.07.2010 / 23:24