logrotate后缀:dateext + rotate

str*_*nko 10 linux logging date logrotate

是否可以同时使用dateext和旋转选项?

config必须如下所示:

/var/log/verybig.log {
    monthly
    size=100M
    dateext
    dateformat .%Y%m
    rotate 5
    create
    missingok
    compress
}
Run Code Online (Sandbox Code Playgroud)

我必须得到:

/var/log/verybig.log
/var/log/verybig.log-201408.1.gz
/var/log/verybig.log-201408.2.gz
/var/log/verybig.log-201408.3.gz
/var/log/verybig.log-201408.4.gz
/var/log/verybig.log-201408.5.gz
/var/log/verybig.log-201409.1.gz
/var/log/verybig.log-201409.2.gz
/var/log/verybig.log-201409.3.gz
/var/log/verybig.log-201409.4.gz
/var/log/verybig.log-201409.5.gz
Run Code Online (Sandbox Code Playgroud)

但现在有了这个配置,logrotate的调试告诉我:

destination /var/log/verybig.201409.gz already exists, skipping rotation
Run Code Online (Sandbox Code Playgroud)

看起来像logrotate不能获得多个后缀选项,但也许我只是坏人阅读器.

使用日期格式是解决方法,我不会得到我想要的格式.

小智 10

您可以使用"日期"作为旋转文件的后缀:

dateext dateformat -%Y-%m-%d-%s
Run Code Online (Sandbox Code Playgroud)

  • 这是通过在日期上添加秒来实现的,以便使文件名唯一。到目前为止,这是我每天能够正常工作多次轮换的唯一方法。 (2认同)

小智 6

您可以使用“日期”作为旋转文件的后缀:

\n\n
/tem/messages {\n    rotate 5\n    daily\n    compress\n    dateext\n    dateformat -%Y-%m-%d.log\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果\xef\xbc\x9a messages-2015-04-08.log.gz

\n