【问题标题】:404 error doesn't appear in Apache error.logApache error.log 中未出现 404 错误
【发布时间】:2016-08-02 18:24:13
【问题描述】:

如果访问者收到 404 错误,则不会在 apacheerror.log 中写入任何内容。在访问日志中显示如下:

GET /qqq HTTP/1.1" 404 409 "-"

error.log 中什么也没有。我已经尝试了有关LogLevel 的一切。据我了解,这是因为 404 页面是自定义页面,如

ErrorDocument 404 /new404.html

但我在所有/etc/apache2 中搜索文件中的文本“404”,但没有找到任何内容(而不是注释行)。可能是什么问题?或者也许我可以以某种方式禁用.htaccess 文件中的自定义 404 页面?或者任何其他方式在error.log中显示404错误?

【问题讨论】:

标签: apache logging


【解决方案1】:

作为提交Apache bug 的人,从 Apache 2.4.1 起将 404 从错误级别降级为信息级别,以下是理由:

在向 Internet 开放的生产 HTTP 服务器中,404 总是发生。恶意软件、扫描程序脚本和各种其他东西会探测 Web 服务器的漏洞或仅仅因为它们可以,这些东西都会触发错误,如果设置了适当的错误级别,这些错误最终会被记录在某个地方。

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

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

【讨论】:

  • 这个改变默默地打破了我的 fail2ban 规则。但我同意你的看法。
  • 如何使用 Apache 2.2 实现这一点?有没有办法关闭该版本中的登录 404 错误?
  • 在 error_log 中记录 404 有助于调试站点,因为 apache 正确记录了它认为文件应该具有的物理路径。删除了一个很棒的调试工具。
  • @GaborGarami,如果您希望该数据出现在 error.log 中,请使用上述 LogLevel core:info
【解决方案2】:

404“错误”通常不会出现在 Apache 错误日志中,无论您是否定义了自定义 ErrorDocument

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。

【讨论】:

    【解决方案3】:

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

    杀了僵尸,一切都好……

    【讨论】:

      【解决方案4】:

      404 是服务器响应,而不是错误。 您可以让 404 日志执行以下操作:

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

      并根据需要调整 awk!

      【讨论】:

      • 欢迎来到 SO!你在回答一个老问题。发布旧问题的新答案通常是为了更新解决方案,以便支持特定语言/库的新语法或新版本。在这种情况下,与其他用户已经写过的内容相比,您的答案没有提供任何额外的信息。请考虑删除或编辑它,以便包含更全面的说明。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      相关资源
      最近更新 更多