Ser*_*rge 2 logging rewrite nginx
如何为nginx设置自定义日志格式,以便解析请求并将其部分分开记录?
我们提供图片文件来计算邮件打开.图片的网址各不相同,但遵循以下规则:
http://www.server.com/counter/XXXXX/YYYYY/dailymail.gif
Run Code Online (Sandbox Code Playgroud)
XXXXX - 电子邮件广告系列的ID; YYYYY - 收件人ID.
有一个单独的/counter位置日志,我想给出一个类似的格式
XXXXX YYYYY DATETIME
Run Code Online (Sandbox Code Playgroud)
位置部分看起来像
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;
}
Run Code Online (Sandbox Code Playgroud)
所以我在变量$ 1和$ 2中有值.如何在日志格式中使用它们?
log_format指令只允许在http级别,因此您必须根据其他变量定义它,例如
http {
log_format tracking "$xxxx $yyyy $time_local";
Run Code Online (Sandbox Code Playgroud)
稍后,在您的位置,只需设置这些变量并以登录tracking格式:
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;
}
Run Code Online (Sandbox Code Playgroud)
使用最新版本的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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3473 次 |
| 最近记录: |