Apache:仅为某些模块配置“LogLevel 调试”?

Ste*_*ski 15 unix logging apache-2.2

我想在我的网络服务器上调试一些身份验证和授权问题,尤其是 mod_authnz_ldap 和其他 mod_auth* 模块。

因此,我LogLevel debug在 Apache 配置中进行了设置,无论是全局设置还是单个 VirtualHost。这为我提供了来自 mod_authnz_ldap 的有用信息,但它也从 SSL 模块中散发出大量噪音。请参阅下面的示例。

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

是的,我可以使用类似的东西排除这些行grep -v ssl_engine logfile,但我也想从其他一些系统日志解析工具中排除这些额外的数据。我宁愿从源头减少日志记录,而不是在目的地将它排除在外。

[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|
Run Code Online (Sandbox Code Playgroud)

Ste*_*ski 17

我正在回答我自己的问题,Jeopardy Style。

阿帕奇 2.3

这在 Apache 2.3 中是可能的。

Apache > HTTP Server > Documentation > Version 2.4 > Per-module logging说:

每个模块的日志记录

LogLevel 指令允许您在每个模块的基础上指定日志严重性级别。通过这种方式,如果您只针对某个特定模块解决问题,您可以调高其日志记录量,而不会获取您不感兴趣的其他模块的详细信息。这对于 mod_proxy 或 mod_rewrite 等模块特别有用您想了解有关它正在尝试做什么的详细信息。

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

LogLevel info rewrite:trace5
Run Code Online (Sandbox Code Playgroud)

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

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

Apache HTTP Server 2.4 中的新功能概述说:

每个模块和每个目录的 LogLevel 配置 现在可以按模块和每个目录配置 LogLevel。在调试日志级别之上添加了新级别 trace1 到 trace8。

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

Apache 2.2 及更早版本:

不,这在 Apache 2.2 中目前是不可能的。HTTP Server > Documentation > Version 2.2 > Modules “LogLevel Directive”中的手册没有显示这个选项。目前唯一的选择是“grep -v”有问题的行。

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

这将包含在 Apache 2.4 中。主干 (2.3) 中的 Apache 文档目前说:

兼容性:Apache HTTP Server 2.3.6 及更高版本中提供了按模块和按目录的配置

和:

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

LogLevel info ssl:warn
LogLevel info mod_ssl.c:warn
LogLevel info ssl_module:warn
Run Code Online (Sandbox Code Playgroud)