我们的生产服务器上运行着一款非常棒的 Fogbugz 工具。问题是该服务器处理着 400 多个域名和 20 多个真实网站。
日志是已经相当繁重,因为我们安装了 Fogbugz,所以有一个非常好的进程叫做 heartbeat,它被称为每15秒!! 想象一下现在我们的日志的大小...充斥着大量如下行:
GET /fogbugz/heartbeat.asp HTTP/1.1" 302 223 "-" "FogBugz 维护服务 7.1"
(看http://fogbugz.stackexchange.com/questions/794/what-does-the-fogbugz-maintenance-service-actually-do)
我们正在运行最新的 Apache httpd 服务器版本。有没有办法只忽略这个特定请求,而不记录它?
mod_log_config可能是一个选择,但我没有找到好的答案。
答案1
我还没有测试过这个,但是,如果你设置了一个环境变量,你应该能够切换它记录到哪个文件:
SetEnvIf Request_URI "/fogbugz/heartbeat\.asp$" is_heartbeat_request=1
CustomLog /var/log/httpd/heartbeat_log combined env=is_heartbeat_request
CustomLog /var/log/httpd/access_log combined env=!is_heartbeat_request
答案2
我没有时间去挖掘过去做过类似事情的配置,但我记得你可以使用 File 指令关闭一个文件的日志记录。我认为它看起来像这样
<Directory /path/to/dir/holding/file>
<Files heartbeat.asp>
CustomLog/dev/null
</Files>
</Directory>
可能值得查看日志模块以查看是否有命令可以关闭日志记录而不是记录到 /dev/null...
答案3
看着本节从您提供的链接。您可以通过管道和程序名称跟踪日志文件名,以便在记录日志请求之前接收日志请求。因此,您可以使用它grep -v heartbeat.asp
来过滤匹配的请求