省略 Apache 访问日志中的某些条目

省略 Apache 访问日志中的某些条目

有没有一种简单的方法可以将噪声条目保留在access_log文件之外,而不需要通过管道记录到grep -v执行匹配条件或其他操作的脚本?

collectd监控 apache 统计信息,但结果是我收到以下消息:

157.98.65.xxx - - [23/Apr/2014:09:46:32 -0400] "GET /server-status/?auto HTTP/1.1" 200 439 "-" "collectd/4.10.9"
157.98.65.xxx - - [23/Apr/2014:09:46:32 -0400] "GET /server-status/?auto HTTP/1.1" 200 439 "-" "collectd/4.10.9"

当他们针对 apache 日志运行分析时,他们现在会得到一个条目,该条目与他们想要运行分析的原因并不真正相关(他们不关心由于系统管理员监控而导致的活动)。

答案1

您可以在日志定义中组合使用SetEnvIf和。env=

Apache 手册在“条件日志记录”下介绍了它,在这里引用。

条件日志

有时,根据客户端请求的特征从访问日志中排除某些条目是很方便的。借助环境变量可以轻松完成此操作。首先,必须设置一个环境变量来指示请求满足某些条件。这通常是通过 来完成的SetEnvIf。然后env=该指令的子句CustomLog用于包含或排除设置了环境变量的请求。一些例子:

# Mark requests from the loop-back interface 
  SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
# Mark requests for the robots.txt file 
  SetEnvIf Request_URI "^/robots\.txt$" dontlog
# Log what remains 
  CustomLog logs/access_log common env=!dontlog

它覆盖在本节手册的内容。

你会寻找类似的东西(未经测试)

SetEnvIf Remote_Addr "157\.98\.65\.xxx" dontlog

或者

SetEnvIf User-Agent "collectd/4\.10\.9" dontlog

相关内容