我读了man logrotate,但我仍然不清楚。我的问题主要与 NGINX 网络服务器日志有关。
这是我当前的 logrotate.conf:
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
在 /etc/logrotate.d 中,我还有:nginx:
/var/log/nginx/*log {
create 0644 nginx nginx
daily
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
这些是我可以看到的一些.gz:
access.log-20150430.gz
access.log-20150509.gz (created after ~10 days)
access.log-20150524.gz (created after ~15 days)
access.log-20150528.gz (created after ~4 days)
- 为什么 .gz 日志如此频繁地在如此“随机”的时间范围内创建?
- 为了每 6 个月和/或在 .log 文件大于 100MB 之后创建新的 .gz,我应该更改什么?
- 旋转 10是否意味着如果我已经有 10 个 .gz 文件,那么当它压缩第 11 个时,它会自动删除最旧的 .gz 文件?如果是,我怎样才能避免删除日志文件?我必须保留它们,即使它们已经很老了。
- daily和rotate 10和有什么不一样?
- 这些文件的创建权限可以吗?
- 在我更改 logrotate.conf 上的某些内容后,我应该重新启动某些服务,还是应该立即应用更改?
我认为 logrotate 手册对您的大部分观点都很清楚。以下是我的回答:
daily
会导致每天发生日志轮换。因此,您需要检查为什么它没有每天发生。例如,notifempty
如果日志文件空了几天,这可能是由其他选项引起的。monthly
和yearly
. 对于尺寸设置,您可以使用size 100M
.daily
指定轮换的频率,同时rotate
指定保留的日志文件数。