避免将某些丢失的文件记录到 Apache2 错误日志中

避免将某些丢失的文件记录到 Apache2 错误日志中

我想避免将一些丢失的文件(出现 404)记录到 Apache2 错误日志中。

我想在 Eclipse 更新网站上为我的插件执行此操作。问题是 Eclipse P2 代码试图访问其元数据文件,如 content.xml、content.jar、digest.zip 和其他一些文件,而这些文件在我的网站上不可用。当 P2 发现这一点时,它最终会访问我提供的 site.xml。总而言之,一切都运行正常……但我有很多行,例如:

[Mon Jul 06 21:46:46 2009] [error] [client 195.91.79.90] File does not exist: ...htdocs/stable/content.jar

在我的 error.log 文件中,这对我没有太大帮助。

我想到的一个解决方案是让 Apache 通过 grep(通过管道日志记录)进行记录,但我正在寻找更好的解决方案。

我正在考虑用以下标签标记这些请求SetEnvIf 指令,并跳过标记请求的错误日志,但 ErrorLog 指令不支持这样做。

还有其他想法吗?

答案1

我找到了一个适合我的解决方案。我在 .htaccess 中添加了以下几行:

# Don't log missing files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(artifacts\.jar|content\.xml|content\.jar)$ - [R=404,L]

它使用 mod_rewrite。R=404 表示当客户端访问任何提及的文件时发送 404 Not Found 状态代码。

RewriteCode 的作用是确保该文件确实不存在。如果我将其中一个文件放入目录中,它将照常运行。

这很有效:提到的文件不再记录到error.log(这是我的目标),但仍记录在访问日志中(具有404状态)。

答案2

您可以使用以下方式进行条件记录mod_log_config

这将允许您使用环境变量。

例子这里不记录图像请求。

答案3

将 LogLevel 提高到比 error 更高(例如 warn 或 crit)不是更容易吗?或者您有理由将其保持在较低水平吗?

相关内容