Apache:只为某些模块configuration“LogLevel debug”?

我想在我的web服务器上debugging一些authentication和授权问题,尤其是mod_authnz_ldap和其他mod_auth *模块。

所以我把LogLevel debug设置为Apacheconfiguration,无论是全局的还是单个的VirtualHost。 这为我提供了来自mod_authnz_ldap的有用信息,但是它也会从SSL模块中传出大量的噪音。 看下面的例子。

有没有办法降低ssl_engine *的LogLevel,同时仍然保持mod_authnz_ldap的日志级别?

是的,我可以使用像grep -v ssl_engine logfile这样的东西排除这些行,但是我也想从其他一些syslogparsing工具中排除这些额外的数据。 我宁愿减less从源头的日志logging,而不是将它排除在目的地。

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

我正在回答我自己的问题,危险的风格。

Apache 2.3

这在Apache 2.3中是可能的。

Apache> HTTP服务器>文档>版本2.4>每个模块日志logging说:

每个模块的日志logging

LogLevel指令允许您以每个模块为基础指定日志严重性级别。 通过这种方式,如果您只是针对一个特定模块进行故障排除,则可以调出日志logging体积,而无需获取其他您不感兴趣的模块的详细信息。这对于诸如mod_proxy或mod_rewrite等模块特别有用你想知道它想做什么的细节。

通过在LogLevel指令中指定模块的名称来完成此操作:

 LogLevel info rewrite:trace5 

这将主LogLevel设置为info,但将其设置为mod_rewrite的trace5。

这将取代早期版本的服务器中存在的每个模块日志logging指令,例如RewriteLog。

Apache HTTP Server 2.4中的新function概述说:

每个模块和每个目录的LogLevelconfiguration现在可以为每个模块和每个目录configurationLogLevel。 在debugging日志级别上添加了trace1到trace8的新级别。

另请参阅Apache-dev邮件列表上的讨论。

Apache 2.2及更早版本:

不,这在Apache 2.2中目前是不可能的。 HTTP Server> Documentation> Version 2.2>模块“LogLevel Directive”中的手册不显示此选项。 目前唯一的select是“grep -v”违规线路。

Apache 2.4(在撰写本文时提出):

这将包含在Apache 2.4中。 (2.3)中的Apache文档现在说:

兼容性:Apache HTTP Server 2.3.6及更高版本提供了每个模块和每个目录的configuration

和:

指定没有模块名称的级别会将所有模块的级别重置为该级别。 使用模块名称指定级别将只设置该模块的级别。 可以使用模块源文件名,模块标识符或模块标识符,并将尾部_module省略为模块规范。 这意味着以下三个规范是等价的:

 LogLevel info ssl:warn LogLevel info mod_ssl.c:warn LogLevel info ssl_module:warn