如何为 nginx 设置自定义日志格式,以便解析请求并单独记录其各部分?
我们提供图片文件来统计邮件的打开次数。图片的 URL 有所不同,但遵循以下规则:
http://www.server.com/counter/XXXXX/YYYYY/dailymail.gif
XXXXX - 电子邮件营销活动的 ID;
YYYYY - 收件人 ID。
有一个单独的日志/counter
位置,我想给出如下格式
XXXXX YYYYY DATETIME
位置部分看起来像
location ~* ^counter/([0-9]+)/([^/]+)/dailymail\.gif$ {
access_log /var/log/mailopened.log
alias /var/www/site.com/1x1.gif?cid=$1&uid=$2&type=daily;
}
所以我有变量 $1 和 $2 中的值。我如何以日志格式使用它们?
log_format
指令允许在http
仅级别,因此您必须根据其他变量来定义它,例如
http {
log_format tracking "$xxxx $yyyy $time_local";
稍后,在您所在的位置,只需设置这些变量并登录tracking
format:
location ~* ^counter/([0-9]+)/([^/]+)/dailymail\.gif$ {
set $xxxx $1;
set $yyyy $2;
access_log /var/log/mailopened.log tracking;
alias /var/www/site.com/1x1.gif?cid=$1&uid=$2&type=daily;
}
使用最新版本的 Nginx 和 PCRE 库,可以省略set
调用并明确命名捕获location
(感谢@kolbyjack):
location ~* ^counter/(?<xxxx>[0-9]+)/(?<yyyy>[^/]+)/dailymail\.gif$ {
access_log /var/log/mailopened.log tracking;
alias /var/www/site.com/1x1.gif?cid=$1&uid=$2&type=daily;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)