微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nginx 直接在配置文章中设置日志分割

只需要在server配置中,配置一个脚本即可,目前这个是定义了日,可以定义到分。
set多添加几个参数即可

server {
listen 80 default_server;
root "/app/www/public";
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;
}
access_log /app/logs/api-access-$year-$month-$day.log main;
error_log /app/logs/api-error.log;
# PHP files
location ~ \.PHP$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/PHP-fpm7.sock;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
直接在Nginx配置文件中,配置日志循环,而不需使用logrotate或配置cron任务。需要使用到timeiso8601内嵌变量来获取时间。 time_iso8601 内嵌变量来获取时间。time
i

so8601内嵌变量来获取时间。time_iso8601格式如下:2015-08-07T18:12:02+02:00。然后使用正则表达式来获取所需时间的数据。

按天分割日志
使用下面的代码

if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
}

access_log /data/logs/Nginx/www.ttlsa.com-$year-$month-$day-access.log;

1
2
3
4
5
6
7
8
也可以使用Perl语法来捕获,如下:


if ($time_iso8601 ~ "^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})") {}

access_log /data/logs/Nginx/www.ttlsa.com-$year-$month-$day-access.log;

1
2
3
4
5
按时、分、秒分割

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;
}
1
2
3
4
5
6
7
8
9
非常方便的进行日志分割。建议按小时分割日志,方便分析查询日志。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐