404错误没有出现在Apache error.log中

时间:2016-04-12 08:54:10

标签: apache logging

如果访问者收到404错误,则无法在apache $this->excel->getActiveSheet()->getStyle('A3:Z3')->applyFromArray($styleArray);中写入任何内容。在访问日志中,它显示如下:

error.log

GET /qqq HTTP/1.1" 404 409 "-" 中没有任何内容。我尝试了error.log的所有内容。据我了解,这是因为404页面是自定义页面,如

LogLevel

但我会搜索所有ErrorDocument 404 /new404.html 的文字" 404"在文件中没有找到任何东西(而不是注释行)。可能是什么问题?或者我可以以某种方式禁用/etc/apache2文件中的自定义404页面?或者在.htaccess中显示404错误的任何其他方式?

4 个答案:

答案 0 :(得分:11)

作为提交Apache bug的人,从Apache 2.4.1开始,将Error从信息级别降级为404,这就是理由:

在生产HTTP服务器的互联网上,404s一直在发生。恶意软件,扫描程序脚本和各种其他东西会探测Web服务器是否存在漏洞,或者只是因为它们可以,并且这些都会触发错误,如果设置了适当的错误级别,这些错误最终会被记录在某处。

大多数生产Web服务器管理员都满足于在访问日志中查看404(与200s和30x重定向一起记录),并希望在错误日志中查看真正的服务器问题 - 他们可以控制修复的事情。在某些服务器中,在error.log中记录404s可能会产生大量垃圾邮件,导致需要管理员注意的合法问题淹没。

404是内容问题,而不是服务器问题。所以我的建议是查看你的access.log(或等效文件)。如果您确实希望在error.log中记录 content 相关问题,则需要设置LogLevel core:info。这将为您提供404s,以及其他一些与内容相关的错误消息。

答案 1 :(得分:3)

404"错误"无论您是否定义了自定义ErrorDocument,都不会出现在Apache错误日志中。

404 错误严格来说不是服务器错误。它是预期的HTTP响应,因此它自然会出现在访问日志中(如您所述),而不是错误日志中。 " 404"是HTTP响应代码,而不是服务器错误代码。

但是,您应该能够启用其他信息"错误记录中的消息(例如Apache 2.4上的LogLevel info)以获取此信息"信息"在您的系统错误日志中:

[Mon Feb 06 08:00:00.090525 2017] [core:info] [pid 13876:tid 1748] [client 203.0.113.111:54493] AH00128: File does not exist: /home/user/public_html/path/to/file

但请注意,没有提及" 404" - 这也许就是为什么你的搜索空白了。不应在生产服务器上维护此LogLevel。

答案 2 :(得分:0)

也许这有助于某人...... 我运行了僵尸apache实例(加载了稍微不同的配置),并且使用Alias定义的静态资源的每个其他请求都是404-ing。

杀死了僵尸,一切都很好......

答案 3 :(得分:0)

404是服务器响应,不是错误。 您可以通过以下方式获取404日志:

cat /var/log/apache2/access_log | grep " 404 " | awk -F' ' '{print $4," ",$5,"-",$7}' > /root/404.log

并根据需要调整awk!

相关问题