logrotate是对日志文件做轮换。就是把现在的log命名为log.1,然后继续写log。如果存在log.1就命名log.1为log.2然后命名log为log.1,依此类推,但并非没有尽头。这个尽头就是您在logrotate的配置文件中的定义,我的系统默认的是到4。那么对log.4做什么操作呢?删除。
syslogd是daemons方式运行的;
logrotate是按计划运行的。
正如在上面5.1中所说的,logrotate的主要配置在/etc/logrotate.conf中设置,而/etc/logrotate.d中的文件是对/etc/logrotate.conf的补充。或者可以看作为了不使/etc/logrotate.conf过大而设置。logrotate的写法:
代码:
把logfile(s)写在前面,包含文件的绝对路径,可以使用空白字元分隔多个log,也可以使用统配符置换;
用 { } 包含所有设定;
一般包括:
prerotate: 在启动 logrotate 之前执行的命令,比如 /usr/bin/charrt -a /var/log/logfile;
postrotate:在执行了 logrotate 之后执行的命令,比如 /usr/bin/charrt +a /var/log/logfile;
您可以设定执行如上两个动作,也可以不设定,这依赖于您的需要。
在prerotate与postrotate之间的动作有:
weeky #每个星期执行一次
rotate 4 #保留四个日志
create #logratoe之后再建立日志
compress #rotate之后的日志是否压缩
include /etc/logrotate.d #包含/etc/logrotate.d目录下面的轮换设置
如果您自己在/etc/logrotate.d下写了自己的轮换设置可以使用
代码:
logrotate -f yourfile
来测试。
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处理,都一视同仁。