logrotate dateformat似乎不支持%H:%M:%S

时间:2015-06-30 08:15:06

标签: date-format logrotate

我是logrotate的新手。当配置到属性“dateformat”时,似乎logrotate不支持strftime“%H”。这是配置:

{
    daily
    rotate  2
    size 3M
    missingok
    notifempty
    dateext
    dateformat -%Y%m%d_%H:%M:%S
    ...
}

旋转的文件格式看起来像:uwsgi_dev.log-20150630_%H:%M:%S,但我想要精确的“小时分和秒”。

谢谢

1 个答案:

答案 0 :(得分:8)

版本3.9.0中添加了对%H的支持。在早期版本中,logrotate不支持strftime“%H:

  

dateformat format_string:使用类似于strftime(3)函数的表示法指定dateext的扩展名。仅允许%Y%m%d和%s说明符。

从logrotate手册页http://linux.die.net/man/8/logrotate

但是,您可以在dateformat字符串中使用%s,这是自1970-01-01以来的秒数。您可以设置dateformat -%Y%m%d-%s。每次旋转日志时都会生成唯一的文件名,因此您可以每天多次旋转文件。遗憾的是,%s部分不易阅读,但您可以使用perl -e "print scalar(localtime(1451214849))"轻松将其转换回可读日期。

在某些系统上,date程序允许使用date -d @1451214849轻松进行此类转换(例如GNU date)。在大多数系统(包括例如Solaris date)上,您可能会遇到像date -d "1970-01-01 + 1451214849 sec"这样的语法。请注意,Busybox date仅支持@技巧,但不支持第二个示例的复杂表达式。