如果线上使用logrotate切割日志会出现切割后,新的日志输出还是会写在老的日志

解决方法

网上查下来有两种解决方法,两种方式我都尝试了切割nginx日志,但是只成功了第一种
(1)通过copytruncate参数
copytruncate参数的原理:将之前的日志内容拷贝走作为备份,接着清空当前文件。这个方法会存在丢失部分日志数据的可能

/app/nginx/logs/access.log {
daily
dateext
rotate 14
compress
delaycompress
missingok
notifempty
copytruncate
create 0664 root root
}

(2)给rsyslog发信号
这个方法我试过了,但是没有成功,新的日志还是输出在老的日志文件中

/app/nginx/logs/access.log {
daily
dateext
rotate 14
compress
delaycompress
missingok
notifempty
create 0664 root root
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}