nginx日志自动分割(非定时任务版切分)

该博客探讨了如何通过Nginx自身的配置实现日志按日期动态切分,从而避免使用crontab定时任务和logrotate等外部工具。通过设置Nginx的映射和时间变量,可以实现在每次请求时自动生成按日期命名的日志文件,解决了系统账户密码过期可能影响日志切分的问题。
摘要由CSDN通过智能技术生成

大部分情况

Nginx日志切分,需要脚本定时任务去切分,每个主机均需要增加一个crontab定时任务,并且定时任务切分会受系统账户密码过期影响日志切分。

解决痛点:

1、 减少crontab定时任务的维护。

2、 减少因系统账号过期导致的日志未切分

处理思路:

如何从nginx本身或结合自身参数实现日志动态切分,且不需要借助外围工具如:logrotate等工具。

考虑nginx自身时间相关参数:

$time_iso8601    生成格式:2021-09-25T15:16:35+08:00

$time_local          生成格式: 25/Sep/2021:15:12:13 +0800

具体配置:

Nginx配置文件server层

    map $time_iso8601 $ydsc {

        default 'date-not-found';

        '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;

    }   

可以获得一个时间变量ydsc

    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                     '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access_$ydsc  main;

结果验证:

生成了按日期切分的文件。如下截图:(说明,只有请求后才会生成,reload时不会直接生成日期文件)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值