http://stackoverflow.com/questions/4883891/ruby-on-rails-production-log-rotation
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。
先看配置文件
$vi /etc/logrotate.conf
里面有一行
include /etc/logrotate.d/
logrotate会读取独立的子任务的配置
下面我们手动执行一个logrotate任务
切换到/etc/logrotate.d/目录下
$ touch test
$ vi test
内容如下
/tmp/test.log{
missingok
create 0640 root root
rotate 50
size=1048576k
}
切换到/tmp/目录 创建一个test.log 大小10G
$ dd if=/dev/zero of=test.log bs=1024 count=10485760
现在,大小10G的日志文件test.log已经就绪,/etc/logrotate.d/下面针对这个日志文件的子任务配置test文件也已准备就绪。
执行命令: logrotate -v /etc/logrotate.conf
发现 /tmp 目录下出现了test.log.1 大小是10G test.log大小是0
再生成一个test.log 大小2G
$ dd if=/dev/zero of=test.log bs=1024 count=2097152
执行命令:$ logrotate -v /etc/logrotate.conf
发现 /tmp 目录下出现了test.log.2 大小是10G 之前的test.log.1 大小变成了2G
原理
logrotate根据设置的文件大小,当超过这个大小时,转储成另一个文件。
logrotate根据设置的rotate值,自动检测日志文件的名字,旧的分割文件名字每次增加1,新分割出来的文件名字是1