参考使用 logrotate 配置 supervisor 进行日志管理按天备份
supervisor
默认的日志备份策略是按大小备份,经常不知道去哪个文件查日志的烦恼。本文通过设置 logrotate
来进行日志安排备份
配置文件
logrotate
的配置文件默认存放在 /etc/logrotate.d
下
新建一个配置文件vim /etc/logrotate.d/log-file
,内容如下,注意第一行是对应的supervisor
产生日志的匹配:
/var/log/supervisor/log_file*.log {
daily
rotate 30
dateext
dateyesterday
copytruncate
delaycompress
compress
missingok
notifempty
}
daily
: 日志按天轮询。也可以设为weekly
、monthly
、yearly
rotate
: 备份数,超过的会删除
dateext
: 备份文件名包含日期信息
dateyesterday
用昨天的日期做后缀,因为日志一般是凌晨备份前一天的数据,如果不用这个参数,会造成,日志文件显示的日期和实际不是一天
copytruncate
: 首先将目标文件复制一份,然后在做截取(truncate)。这样做就防止了直接将原目标文件重命名引起的问题。
delaycompress
:与compress
选项一起用,delaycompress
选项指示logrotate
不将最近的归档压缩,压缩将在下一次轮循周期进行 就是最新两个日志文档不压缩
compress
: 压缩文件。如果不想压缩 可以和delaycompress
一起去掉
missingok
: 忽略错误
notifempty
: 如果没有日志 不进行轮询
修改supervisor日志配置
修改对应的配置文件/etc/supervisor/conf.d/xxxxxx.conf
,如果还不起作用,看一下全局配置文件/etc/supervisor/supervisord.conf
# no limit on the size
stdout_logfile_maxbytes=0
stderr_logfile_maxbytes=0
# no backup with supervisor
stdout_logfile_backups=0
stderr_logfile_backups=0
测试
测试:
logrotate -d /etc/logrotate.d/log-file
如果轮询的条件不满足,上面的命令不会执行,这个时候可以用下面这条命令来达到效果, -f
强制轮询 -v 打印logrotate
日志
logrotate -vf /etc/logrotate.d/log-file
验证:
ls -alth /var/log/supervisor/
会看到日志文件中有对应的日期