我想避免将一些丢失的文件(出现 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
答案3
将 LogLevel 提高到比 error 更高(例如 warn 或 crit)不是更容易吗?或者您有理由将其保持在较低水平吗?