logrotate - 日志分割
分割逻辑:文件大小达到配置文件设置的指定大小后,会将文件改名为“
file.1file.2file.3…”以此类推,并新建一个file文件,我们把它叫做“转储”。logrotate优点在于切割日志的同时,不丢失数据。
系统自带的日志分割工具,配置文件在
/etc/logrotate.conf和/etc/logrotate.d/目录下。
配置文件
$ cd /etc/logrotate.d/
$ vi test-logsplit
/var/log/test.log {
daily
rotate 7
missingok
notifempty
minsize=1M
maxsize=10M
size=1M # 设置文件切割临界点。
compress
delaycompress
dateext
dateformat .%Y-%m-%d
create 0644 root root
sharedscripts
postrotate
cat /dev/null > /var/log/test.log
endscript
}
配置说明
/var/log/test.log:需要切割的日志文件daily:日志文件每天切割一次weekly:日志文件每周切割一次monthly:日志文件每月切割一次yearly:日志文件每年切割一次
rotate 7:保留7个切割后的日志文件missingok:如果日志文件丢失,不报错继续执行notifempty:如果日志文件为空文件,不进行切割minsize=1M:日志文件最小为1Mmaxsize=10M:日志文件最大为10Msize=1M:日志文件大小为1M时进行切割compress:切割后日志文件进行压缩delaycompress:压缩的文件放到切割日志后,再进行压缩dateext:切割后的日志文件会加上时间后缀dateformat .%Y-%m-%d:时间后缀格式create 0644 root root:切割后的日志文件权限为0644,所有者root,所有组rootsharedscripts和endscript中间可以引用系统的命令sharedscripts:共享脚本,在切割前后的命令postrotate:切割后执行的命令endscript:命令结束符
执行切割
$ logrotate -f /etc/logrotate.d/test-logsplit
选项:
-f :强制转储文件。
-d :debug模式,测试配置文件是否有错误。
-v :显示转储过程。
配置cron定时切割
$ crontab -e
# 每天凌晨00点执行切割任务
0 0 * * * /usr/sbin/logrotate -f /etc/logrotate.d/test-logsplit