我读过手动旋转,但我仍然不清楚。我的问题主要与 NGINX Web 服务器日志有关。
这是我当前的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 个月创建新的 .gz 文件和/或 .log 文件大于 100MB 之后创建?
- 和旋转 10这是否意味着如果我已经有 10 个 .gz 文件,那么当压缩第 11 个时,它会自动删除最旧的 .gz 文件?如果是,我该如何避免删除日志文件?我必须保留它们,即使它们很旧。
- 有什么区别日常的和旋转 10?
- 这些文件的创建权限可以吗?
- 在我对 logrotate.conf 进行某些更改后,我是否应该重新启动某些服务,或者是否应该立即应用这些更改?
答案1
我认为 logrotate 手册对您的大部分观点都很清楚。以下是我的答案:
- 使用
daily
会导致日志轮换每天都发生。因此,您需要检查为什么它没有每天发生。例如,notifempty
如果日志文件几天都是空的,这可能是由其他选项引起的。 - 我找不到每 6 个月执行一次的选项,但您有
monthly
和yearly
。对于尺寸配置,您可以使用size 100M
。 - 是的。要保留所有值,您可以选择一个非常大的值。
daily
指定轮换频率并rotate
指定保留的日志文件数量。- 如果日志不包含敏感信息(其他人可以读取),那就没问题。
- 不,您不需要重新启动任何程序。