从 2.2.7 升级到 Apache 2.4.9 后,日志似乎无法正常工作。只记录了 modsecurity 和 fcgid 事件,而没有记录来自 Apache 的任何内容,例如文件未找到错误。检查 Apache error_log,特别是在重新启动后,我注意到了这一点:
[Sun Jul 13 05:16:10.482003 2014] [log_config:warn] [pid 30283:tid 140001085970176] (32)Broken pipe: [client 125.166.227.47:26260] AH00646: Error writing to |/usr/local/cpanel/bin/splitlogs --main=server.mysite.com --suffix=-bytes_log
[Sun Jul 13 05:16:10.482047 2014] [log_config:warn] [pid 30283:tid 140001085970176] (32)Broken pipe: [client 125.166.227.47:26260] AH00646: Error writing to |/usr/local/cpanel/bin/splitlogs --main=server.mysite.com --mainout=/usr/local/apache/logs/access_log
我不知道“管道损坏”是什么意思。我已启用管道日志记录(在升级 Apache 之前已启用)。尝试禁用它,但结果相同,没有记录任何内容。检查了 httpd.conf 文件的日志部分并与旧 conf 文件进行比较,但似乎找不到任何不同之处:
<IfModule mod_log_config.c>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedvhost
LogFormat "%v %{%s}t %I .\n%v %{%s}t %O ." bytesvhost
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog "|/usr/local/cpanel/bin/splitlogs --main=server.mysite.com --suffix=-bytes_log" bytesvhost
CustomLog "|/usr/local/cpanel/bin/splitlogs --main=server.mysite.com --mainout=/usr/local/apache/logs/access_log" combinedvhost
</IfModule>
如果有人能解释一下这个问题,我将不胜感激。谢谢。
更新:已通过将 access_log 和 error_log 的权限更改为 777 来消除损坏文件错误。但主要问题仍然存在,因为没有记录任何与 Apache 相关的错误(404、403 等)。
答案1
好吧,我想我已经解决了这个问题!解决方法是在 httpd.conf 中更改以下指令:
LogLevel warn
新值:
LogLevel info
显然,Apache 2.4.9 中的一些错误日志的重要性已经发生了变化,因此 404 等错误日志现在处于信息级别,如下所述:http://httpd.apache.org/docs/current/mod/core.html#loglevel