Linux 如何使用日期和时间作为Logrotate文件名的一部分?
我需要使用时间和日期作为循环日志的扩展。现在我使用的是Linux 如何使用日期和时间作为Logrotate文件名的一部分?,linux,date,logging,logrotate,Linux,Date,Logging,Logrotate,我需要使用时间和日期作为循环日志的扩展。现在我使用的是dateext,但问题是我不能在同一天/同一天实现多次轮换,我必须每小时轮换一次 以下是我创建的logorotate配置: /someDirectory/logs/*.log { nocompress notifempty copytruncate size 100M dateext olddir someDirectory/logs/archived rotate 10 } 我遗漏了
dateext
,但问题是我不能在同一天/同一天实现多次轮换,我必须每小时轮换一次
以下是我创建的logorotate配置:
/someDirectory/logs/*.log {
nocompress
notifempty
copytruncate
size 100M
dateext
olddir someDirectory/logs/archived
rotate 10
}
我遗漏了什么?您可以像以下那样使用postrotate脚本:
someDirectory/logs/*.log /someDirectory/logs/*.log {
nocompress
notifempty
copytruncate
size 100M
dateext
olddir someDirectory/logs/archived
rotate 10
sharedscripts
postrotate
day=$(date +%Y%m%d)
daytime=$(date +%Y%m%d-%H:%M:%S)
mv somelog-$day /var/log/somelog-$daytime
endscript
}
正在读取对%H:%M:%S的logrotate支持(虽然尚未在我最喜欢的Linux发行版上)
如果您的系统还不支持这一点,并且您只需要一些额外的信息来区分您可以使用的每小时存档文件
dateformat-%Y%m%d-%s
或者在另一个答案中,按顺序编号的日志等待澄清如何使
somelog
成为变量。感谢您的帮助。你能告诉我如何在PostRotate中获取日志文件名吗?你的日志文件名是什么path@MuneebNasir你能用获取日志文件名的解决方案更新你的原始帖子吗?这将使这篇文章更加有用和适用,因为在一个给定的位置经常有许多不同类型的日志文件。谢谢对我来说,答案不太清楚,我应该用什么来代替“somelog”?日志的完整路径类似于/var/log/myservice.log
或只是myservice.log
,因为在我的例子中,要旋转的日志的名称已经在脚本顶部声明。dateext是否会创建somelog-$day
?对于那些对logrotate不太熟悉的人来说,答案不是自我解释的。考虑到logrotate
提供的选项,我认为这个postrotate
语句是没有必要的。正如Joachim Wagner提到的,dateformat
(以及dateext)
完成这项工作。