如何在 Logrotate 上使用日期和时间作为文件名的一部分?

How to use date and time as part of filename on Logrotate?

我需要使用时间和日期作为循环日志的扩展。现在我正在使用 dateext,但问题是我不能在同一个 date/day 上实现多次轮换,我必须每小时轮换一次

这是我创建的 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
  }

正在阅读 logrotate dateformat seems not supporting %H:%M:%S 对 %H:%M:%S 的 logrotate 支持已经到来(虽然还没有出现在我最喜欢的 Linux 发行版中)。

如果您的系统尚不支持此功能,您只需要一些额外信息来区分您可以使用的每小时存档文件

dateformat -%Y%m%d-%s

或按顺序编号的日志待在另一个答案中说明如何使 somelog 成为变量。