我在 apache 中有这个自定义日志
SetEnvIFNoCase User-agent "ELB-HealthChecker/2.0" skiplog
LogFormat "%t \"%r\" %>s %O | client:%a | Local:%A | Host:%v | %H | %m | %P(pid) | TimeTaken:%T | %q |DataReceived:%I-Sent:%O-Total:%S | %l | %u | \"%{Referer}i\" \"%{User-Agent}i\"" mylog
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined_mylog
CustomLog /var/log/apache2/access.log mylog env=!skiplog
CustomLog /var/log/apache2/access_org.log combined_mylog env=!skiplog
基本上我想跳过日志,如果用户代理是"ELB-HealthChecker/2.0"
现在我已经转向 nginx,但我不知道如何在其中使用它
答案1
nginxaccess_log
指令接受一个参数if
,该参数仅当给定的条件不为假或空字符串时才导致其记录。
因此,您可以设置一个变量,并在该用户代理出现的情况下将变量设置为 0。您可以在map
:
map $http_user_agent $loggable {
default 1;
ELB-HealthChecker/2.0 0;
}
然后您可以修改access_log
以检查变量:
access_log /var/log/nginx/whatever-access.log log_format_name if=$loggable;