【问题标题】:Logrotate does not auto rotate when based on log size基于日志大小时,Logrotate 不会自动轮换
【发布时间】:2011-09-26 06:50:31
【问题描述】:

我有一个自定义应用程序 (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 时,日志不会自动轮换。任何帮助将不胜感激。

【问题讨论】:

    标签: logrotate


    【解决方案1】:

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

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

    【讨论】:

    • > 在 logrotate 至少在指定的时间内知道文件之前,不会轮换日志文件。瓜?这对我来说是个新闻。我在 logrotate 手册页中没有看到任何关于此的内容。如何调试 logrotate conf 文件而无需等待 24 小时查看它是否有效?
    • @Logan - 您使用-f(强制)选项。
    • 另见unix.stackexchange.com/questions/15546/…(/var/lib/logrotate/status 和 -f 标志)
    【解决方案2】:

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

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

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

    0 * * * * logrotate <my conf here> 
    

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

    【讨论】:

      猜你喜欢
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 2017-11-15
      相关资源
      最近更新 更多