我想保留/存档我的所有 Web 服务器日志,并且不希望 logrotate 删除任何日志。对此有什么推荐的方法吗?这是一台运行 Nginx 的 Linux 机器。提前致谢。
(我更喜欢使用 cronolog,但由于 Nginx 处理日志的方式,它似乎与 Nginx 不太兼容。)
答案1
使用 logrotate 来做,只需告诉它你想要什么......
/var/log/nginx/*.log {
daily
dateext
missingok
rotate 7305 # 2 decades
olddir /var/log/nginx/old
compress
delaycompress
notifempty
create 644 nginx root
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
我不使用 nginx,所以我使用了我为 postrotate 找到的一个示例...如果您已经有 logrotate 脚本,请先修改它。
关键部件:
- “daily” 表示每天。您可以设置每周或基于大小,但这与“dateext”的交互效果不太好。
- “dateext” 表示它将根据日期而不是简单的数字为轮换的日志文件命名;这样它就不必每天重命名每个日志文件和你可以从文件名中知道日志文件的日期
- “rotate 7305”——这是二十年。保留或多或少...logrotate 确实希望有某种形式的退休,但你可以将其设置得非常高。
- “olddir” 必须位于同一个文件系统上,但这会将日志保存在单独的目录中,以便您可以弄清楚发生了什么
- “delaycompress”和“create”有助于确保它与不想使用它的软件一起工作