7

我有一个自定义应用程序 (myApp),它将日志写入文件“/var/log/myApp”。我可以看到正在写入的日志,并且工作正常。现在我正在尝试为此文件设置 logrotate,为此我创建了一个配置文件“/etc/logrotate.d/myApp”,其内容是 -

/var/log/myApp {
   missingok
   size +10k
   start 0
   nocompress
   create 0600 root root
   rotate 10
   postrotate
     /etc/init.d/rsyslog restart > /dev/null 2>&1 || true
   endscript
}

现在,如果我这样做,logrotate -dv /etc/logrotate.d/myApp我看不到任何错误,以及何时logrotate -f /etc/logrotate.d/myApp执行,即强制 logrotate 旋转日志。但是当日志文件大小超过 10k 时,日志不会自动轮换。任何帮助,将不胜感激。

4

2 回答 2

4

logrotate/etc/logrotate.d/根据 中配置的时间间隔轮换 中指定的日志/etc/logrotate.conf。在某些发行版上,默认值为一周。您可以在您的配置文件中使用例如“每日”覆盖特定配置中的该时间间隔。

logrotate在至少与指定时间一样长的时间内知道文件之前,不会轮换日志文件。我假设您等了这么久和/或修改了 conf 文件?

于 2012-02-01T20:29:44.693 回答
1

logrotate 每天只工作一次,所以它不会一直检查你的文件大小。

如果你想要一种有效的方法来保持较小的大小,你应该使用像这样的 cron 作业

例如,在您的 crontab 中强制每小时轮换一次

0 * * * * logrotate <my conf here> 

如果需要,您的日志将每小时轮换一次。我在我的免费层 aws 服务器中遇到了这样的问题,因为大小迅速超出并且我没有足够的磁盘空间来等待 24 小时进行轮换

于 2014-03-30T08:55:06.440 回答