nginx日志分割

 

定时任务

0 0 * * *  /usr/sbin/logrotate -f /etc/logrotate.d/nginx

 

 

/etc/logrotate.d/nginx文件

 

/letv/logs/nginx/api.pv.log /letv/logs/nginx/boss.pv.log{
daily
dateext
maxage 60
rotate 60
missingok
sharedscripts
postrotate
if [ -f /usr/local/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
fi
endscript
}

Nginx日志分割配置方法在不同操作系统下有所不同,以下分别介绍: ### Linux系统 在Linux系统中,可借助logrotate工具来配置Nginx日志分割。首先,在`/etc/logrotate.d`中创建文件`nginx`,该文件作为Nginx日志分割的配置文件。示例配置如下: ```plaintext /opt/docker-ws/nginx/logs/*.log { daily # 每天分割一次 size 5M # 源文件小于5M时不分割 rotate 30 # 保留最近30个分割后的日志文件 copytruncate notifempty # 当日志文件为空时不分割 missingok dateext # 切割后的文件添加日期作为后缀 } ``` 此配置指定每天执行一次分割,并且当文件大于5M时才进行分割。同时,`notifempty`参数确保当日志文件为空时不进行分割,`dateext`参数会在切割后的文件添加日期作为后缀,`rotate 30`表示保留最近30个分割后的日志文件 [^1]。 另外,还可以通过crontab定时任务来执行日志切割脚本。例如在打开的文件最末尾添加如下内容,可实现每天凌晨00:01执行Nginx日志切割脚本: ```plaintext 01 00 * * * /home/web/scripts/rotate_nginx_logs.sh > /dev/null 2>&1 ``` ### Windows系统 在Windows系统下实现Nginx自动分割日志,可通过批处理脚本完成。以下是示例脚本: ```batch @shift ::设置nginx安装文件路径和当天时间变量 @echo off set nginx_dir=D:\nginx-1.16.0 set dir=%nginx_dir%\logs\cut_log set log=%nginx_dir%\logs\access.log set errorlog=%nginx_dir%\logs\error.log set today=%date:~0,4%-%date:~5,2%-%date:~8,2% ::判断nginx安装文件路径设置是否正确 :exist_nginx_dir @echo off if exist %nginx_dir% ( cd %nginx_dir% goto check_log ) else ( echo 此路径%nginx_dir%不存在,请检查 goto stop ) ::判断nginx的access.log :check_log @echo off if exist %log% ( goto check_dir ) else ( echo %log%文件不存在,请检查 goto stop ) ::判断nginx的cut_log目录 :check_dir @echo off if exist %dir% ( goto main ) else ( md "%dir%" goto main ) ::创建相关目录和对nginx日志进行切割 :main @echo off ::结束nginx进程 taskkill /F /IM nginx.exe > nul move "%log%" "%dir%\access-%today%.log" > nul move "%errorlog%" "%dir%\error-%today%.log" > nul start nginx.exe ``` 该脚本首先设置了Nginx安装路径、日志文件路径和日期变量,然后依次检查Nginx安装路径、日志文件和切割日志的目录是否存在,若不存在则创建相应目录。接着结束Nginx进程,将访问日志和错误日志移动到指定目录并添加日期后缀,最后重新启动Nginx [^2]。 ### 通过Nginx配置文件修改 还可以在Nginx配置文件本身进行日志切割配置,代码如下: ```nginx 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; } access_log logs/access_$year-$month-$day-$hour-$minutes-$seconds.log main; error_log logs/error_$year-$month-$day-$hour-$minutes-$seconds.log main; ``` 此配置会依据时间戳对日志文件进行命名,从而实现日志分割 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值