Web服务器日志归档的最佳实践(Linux + Nginx)

我想保留/存档所有的Web服务器日志,并没有任何被logrotate删除。 那么推荐的方法是什么呢? 这是一个运行Nginx的Linux机器。 提前致谢。

(我宁愿使用cronolog,但由于Nginx处理日志logging的方式,它似乎不适合Nginx。)

用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脚本已经开始修改。

关键部分:

  • “每日”意味着每一天。 你可以做每周或基于大小的,但是这并不像“dateext”那样美丽。
  • “dateext”意味着它会根据date给出旋转的日志文件名称而不是简单的数字; 这样就不必每天重命名每个日志文件, 并且可以从文件的名称中知道日志文件的date
  • “旋转7305” – 这是二十年。 保持或多或less… logrotate真的喜欢有某种退休,但你可以把它设置得离谱高。
  • “olddir”必须在同一个文件系统上,但是这会将日志保存在一个单独的目录中,以便您能够弄清楚发生了什么事情
  • “delaycompress”和“create”帮助确保它可以与不想使用它的软件一起工作