Loading...

    AD: 猛买 | 快递查询 | Jobsdigg | 很棒的男装店

在Linux上配置logrotate

可任意转载,但必须在醒目位置以超链接形式标明文章原始出处和作者信息
原文地址:http://www.blogkid.net/archives/2349.html

开始用Mongrel部署rails应用时,我参考这篇文章,设置了一下rails的log rotate。当时传入的是”daily”:每天一个日志文件。没想到每天日志切换后,大部分Mongrel进程都会挂掉,只剩下一个可用的。跟踪日志发现,在每天切换日志文件时,只有第一个进程可以成功切换,其它进程因为新的日志文件已经存在,全部挂死。

仔细思考之后我认为,对日志的rotate其实不该放在应用程序里进行。对需要长时间运行的应用来说,只需要向固定的位置输出日志,然后在外部按照需要做截断处理——可以按天、按周甚至按月,如有必要可以进行压缩。这也符合Unix哲学

我尝试过rotatelogs、cronolog以及logrotate,觉得logrotate更好用。在ubuntu服务器上可以用apt-get安装:

apt-get install logrotate

之后可以打开它的配置文件进行编辑:

vim /etc/logrotate.conf

详细的参数说明可以看它的man page,我的配置如下:

/path_to_app/log/production.log {
daily   #按日阶段
missingok
rotate 7  #保留7天
compress  #压缩
delaycompress #不压缩前一个(previous)截断的文件(需要与compress一起用)
dateext  #增加日期作为后缀,不然会是一串无意义的数字
copytruncate  #清空原有文件,而不是创建一个新文件
}

保存之后运行:

/usr/sbin/logrotate /etc/logrotate.conf

新的配置就能生效了。

不光对rails应用的log可以这么做,任何日志拿来给logrotate处理,都一视同仁。

2 Responses to “在Linux上配置logrotate”


  1. 多个实例同时写同一个log file本身就有问题吧

  1. [...] 如果没有日志切分,日志可能很快会把硬盘塞满,最后不得不手动清理。做日志切分推荐用logrotate,易于配置,一旦配置完成就会默默无闻地工作。 [...]

Leave a Reply