我是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,但我想要精确的“小时分和秒”。
谢谢
答案 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
仅支持@
技巧,但不支持第二个示例的复杂表达式。