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)
完成这项工作。