如何在 Apache2 服务器上启用日志级别调试 [关闭]

Posted

技术标签:

【中文标题】如何在 Apache2 服务器上启用日志级别调试 [关闭]【英文标题】:How to enable loglevel debug on Apache2 server [closed] 【发布时间】:2011-08-04 05:44:20 【问题描述】:

我的 error.log 包含:

由于可能的配置错误,请求超出了 10 个内部重定向的限制。如有必要,使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。

我在 apache 配置文件上替换了 loglevel:

LogLevel debug

重新启动后,我收到相同的错误消息,但没有所谓的“回溯”。据我了解,mod_rewrite 正则表达式应该生成那 10 行重定向。

在网上搜索了很多关于 loglevel 和 mod_rewrite 的解释,但没有一个关于如何使 loglevel 调试工作的词。

有什么想法吗?

【问题讨论】:

这是一个相关问题,不应关闭。请投票重新开放。 【参考方案1】:

请注意,在较新的 Apache 版本上,RewriteLogRewriteLogLevel 已被删除,实际上现在在尝试启动 Apache 时会触发错误(至少在我使用 Apache 2.4.2 安装的 XAMPP 上):

AH00526:path/to/config/file.conf 的第 xx 行语法错误: 无效的命令“RewriteLog”,可能拼写错误或由未包含在服务器配置中的模块定义`

相反,您现在应该使用通用 LogLevel 指令,级别为 trace1trace8。 'debug' 没有在日志中为我显示任何重写消息。

示例:LogLevel warn rewrite:trace3

官方文档,see here。

当然这也意味着现在你的重写日志将写入通用错误日志文件中,你必须自己整理出来。

【讨论】:

对于整理终端命令grep 非常有帮助。 在 Apache 2.4 中,LogLevel 指令位于 Ubuntu 上的 /etc/apache2/apache2.conf 中。似乎很明显,但我花了一秒钟才弄清楚。【参考方案2】:

编辑:请注意,此答案已有 3 年以上的历史。对于较新版本的 apache,请参阅 sp00n 的答案。将此答案留给旧版本 apache 的用户。

对于旧版本的 apache:

对于调试 mod_rewrite 问题,您需要使用 RewriteLogLevel 和 RewriteLog:

RewriteLogLevel 3
RewriteLog "/usr/local/var/apache/logs/rewrite.log"

【讨论】:

这应该放在 .htaccess 文件中吗? @adityamenon 如果您使用的是 apache 2.3.6 或更高版本,它可以进入 .htaccess,否则必须进入 vhost 定义。【参考方案3】:

您需要在较新版本中将LogLevel rewrite:trace3 用于您的httpd.conf http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging

【讨论】:

请记住阅读该页面上的警告:“对 mod_rewrite 使用高跟踪日志级别会显着降低 Apache HTTP 服务器的速度!使用高于 trace2 的日志级别仅用于调试!”跨度>

以上是关于如何在 Apache2 服务器上启用日志级别调试 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中启用/禁用日志级别?

如何在 Ubuntu Apache 中启用错误日志

使用 jdk 进行 slf4j 日志记录 – 如何启用调试?

如何使用 CMake 启用 gdb -g3 调试级别?

如何在电脑中将日志一般状态改成调试状态

如何根据 mod_userdir 的用户拥有单独的 Apache2 日志文件?