Nginx配置日志按天保存

Nginx日志按天保存,网上有很多教程,都是通过脚本辅助,重命名文件实现。
其实Nginx自身有原生方法,可以通过配置实现。
首先配置access日志的格式:

1
2
3
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

更改为

1
2
3
log_format  main  '$remote_addr - $remote_user [$time_iso8601] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

此处主要更改access日志文件中日期格式,与日志按天保存没有关系,也可以不修改,只是为了更方便。
配置日志按天保存,在server字段内配置,如下:

1
2
3
4
5
6
7
8
9
10
11
server {

···

if ($time_iso8601 ~ '(\d{4}-\d{2}-\d{2})') {
set $ymd $1;
}
access_log logs/80.access_$ymd.log main;

···
}

需要注意的是:保证日志目录可被nginx用户组有读写权限。
没有授权可以通过chown授权。
然后重启nginx即可。
更详细的日期变量设置:

1
2
3
4
5
6
7
8
9
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})")
{
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
set $minutes $5;
set $seconds $6;
}

可以根据自身需求调整。

本文标题:Nginx配置日志按天保存

文章作者:Francis

原始链接:http://www.cnops.com/posts/a8c97263.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。