如何在日志旋转中使用日期和时间作为文件名的一部分?

问题描述 投票:2回答:2

我需要使用时间和日期作为旋转日志的扩展。现在我使用的是 dateext但问题是,我不能在同一天实现轮换一次以上,我必须按小时进行轮换。

这是我创建的logorotate配置。

/someDirectory/logs/*.log {
    nocompress
    notifempty
    copytruncate
    size 100M
    dateext
    olddir someDirectory/logs/archived
    rotate 10
}

我缺少什么?

linux date logging logrotate
2个回答
3
投票

你可以使用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
  }

1
投票

阅读 logrotate数据格式似乎不支持%H:%M:%S。 logrotate 对 %H:%M:%S 的支持已经到来(尽管在我最喜欢的 Linux 发行版上还没有)。

如果你的系统还不支持这种格式,你只需要一些额外的信息来区分每小时的存档文件,你可以使用

dateformat -%Y%m%d-%s

或按顺序编号的日志,待澄清在其他答案中如何使 somelog 一个变量。

© www.soinside.com 2019 - 2024. All rights reserved.