阻止 Apache 将重复的日志条目写入 access_log

con*_*are 5 logging apache-2.2

我有以下几行与登录我的 Apache vhost 文件有关

SetEnvIf Request_URI "^/server-status$" dontlog
SetEnvIf Request_URI "^/haproxy-status$" dontlog
SetEnvIf Request_Method "OPTIONS" dontlog
CustomLog /var/log/apache2/access_log combined env=!dontlog
#ErrorLog  /var/log/apache2/error_log

#Remote logging -- handle by syslog
ErrorLog "|logger -p local3.info -t httperror"
CustomLog "|logger -p local3.info -t http" combined env=!dontlog

LogLevel warn
Run Code Online (Sandbox Code Playgroud)

我真的不想弄乱我无法正确获取日志的地方,但我也不希望每个条目都看到重复的行。目前,如果我提出一个请求,我会看到一行 Apache,然后我认为是 haproxy 将它转发到我的应用程序的一行,类似于:

aa.bbb.ccc.dd - - [05/Oct/2010:02:29:51 +0000] "GET /the_url HTTP/1.1" 200 4 "-" "-"
eee.fff.gg.hh - - [05/Oct/2010:02:29:51 +0000] "GET /the_url HTTP/1.1" 200 4 "-" "-"
aa.bbb.ccc.dd - - [05/Oct/2010:02:31:03 +0000] "GET /another_url HTTP/1.1" 200 4 "-" "-"
eee.fff.gg.hh - - [05/Oct/2010:02:31:03 +0000] "GET /another_url HTTP/1.1" 200 4 "-" "-"
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能防止这种情况?

Ste*_*ski 6

请记住,VirtualHost 部分中的日志指令可能与“Main”配置部分中的日志指令发生冲突。重复的日志行通常是由CustomLog /var/log/apache2/access_log主配置部分中的一行和CustomLogVirtualHost 部分中的第二行引起的。

在所有配置文件中搜索“access_log”以查看是否有另一个部分负责重复的日志行。

如果你真的想为你的 VirtualHost 有单独的日志,那么一定要写入单独的日志文件:

在主要的 HTTP 配置中:

CustomLog /var/log/apache2/access_log
Run Code Online (Sandbox Code Playgroud)

部分内部:

CustomLog /var/log/apache2/www.thisvhost.org/access_log
Run Code Online (Sandbox Code Playgroud)

为了保持简单并防止混淆,我通常避免在 VirtualHost 部分中使用任何日志指令。您可以稍后根据它们的 VirtualHost 名称拆分日志。请务必使用“通用日志格式与虚拟主机”(%v 或 %V)之类的格式

另一种可能性。syslog.conf 是否有任何内容写入 /var/log/apache2/access_log 文件?这是值得怀疑的,因为 syslog 使用不同的日志格式。