Logrotate日志切割
Logrotate日志切割
- 1. 配置文件
- 1.1 配置放在那里
- 1.2 配置文件参数含义
- 2. 范例
- 3. 手动触发测试
在Linux下,日志会不停的增长,为了防止日志文件过大,导致我们无法在日志中快速找到想要的信息,我们会定时对日志文件进行切割。在这里我将使用logrotate切割日志。
logrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为“转储”。
我们可以根据日志的大小,或者根据其使用的天数来转储。
logrotate的执行由crond服务实现,参考 /etc/cron.daily/logrotate 脚本,该脚本每天由cron在指定的时间(/etc/crontab)启动。
1. 配置文件
1.1 配置放在那里
配置内容可以放在两个地方:
- /etc/logrotate.conf
主配置文件 - /etc/logrotate.d/
主配置文件中调用

1.2 配置文件参数含义
| 参数 | 作用 |
|---|---|
| missingok | 日志切割期间产生错误将被忽略(如果日志丢失,不报错继续切割) |
| daily、weekly、monthly、yearly | 每天、每周、每月、每年执行 |
| create MODE OWNER GROUP | 切割后指定创建新的空白文件的属性 |
| nocreate | 不建立新的日志文件 |
| rotate N | 保留N份,多余删除,不计算新建日志文件 |
| dateext | 用当前日期作为后缀命名格式(默认年月日) |
| dateformat .%s | 配合dateext使用,紧跟在下一行出现,定义切割后的文件名,只支持%Y,%m,%d,%s |
| size/minsize | 达到指定大小才会切割,默认单位bytes,还可以是KB和MB |
| compress | 切割结束后,归档并使用gzip格式压缩 |
| nocompress | 解除compress参数 |
| delaycompress | 总是与compress参数一起使用,指示logrotate不要将最近的归档压缩,压缩将在下一次切割进行。 |
| nodelaycompress | 解除delaycompress参数 |
| ifempty | 即使日志为空,也执行切割 |
| notifempty | 如果日志为空,切割不执行 |
| prerotate/endscript | 在所有其他指令之前执行prerotate和endscript之间的命令。 |
| postrotate/endscript | 在所有其他指令完成后,postrotate和endscript之间的命令将被执行。 |
| sharescripts | 所有日志切割后统一执行一次脚本,如果没有配置该参数,则每个日志切割后都会执行一次脚本。 |
| errors ADDRESS | 切割时的错误信息发送到指定的Emial地址 |
| mail ADDRESS | 切割日志发送到指定的Email地址 |
| nomail | 切割日志不发送邮件 |
| olddir DIRECTORY | 切割后的日志文件放入指定目录,必须与当前日志处在同一文件系统 |
| noolddir | 切割后的日志文件与当前文件放在同一目录下 |
| copytruncate | 用于还在打开中的日志文件,把当前日志备份并截断;先拷贝后清空,可能丢失部分日志 |
| nocopytruncate | 备份日志文件,但不截断。 |
2. 范例
cat > /etc/logrotate.d/nginx.conf <<EOF
/app/nginx/logs/*.log { #对log后缀的进行转储su root root # 以root用户运行daily #每天一次rotate 7 #保留7天代missingok #如果日志不存在,不提示错误,继续处理下一个notifempty #如果不空就转储,如果空的就不转储#######如果需要压缩可以################### compress #进行压缩# delaycompress #延迟压缩######################################size 10M #当文件大于10M转储,1天检查一次nocompress #不压缩delaycompress #延迟压缩create 644 nginx nginx #新文件权限postrotate #转储后的操作if [ -f /app/nginx/log/nginx.pid ];thenkill -USR1 `cat /app/nginx/logs/nginx.pid` #nginx重启fiendscript
}
EOF
3. 手动触发测试
logrotate /etc/logrotate.d/nginx.conf

至此logrotate配置完毕.
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
