使用 logrotate 旋转日志

使用 logrotate 旋转日志

我想根据以下规则安排日志轮换:

  1. 过去 2 天的日志文件保持不变
  2. 超过 2 天的日志文件将被归档并移动到按创建日期命名的文件夹中。(例如,2012 年 12 月 1 日的所有日志都将移动到 20121201 并归档。)
  3. 超过 14 天的日志文件将被删除。

我想为此使用 logrotate,但我不确定它是否适合我的需要。

我想要这样的东西,但它不起作用。

/mylog/* {   
prerotate
DIR=$(date +%y%m%d); // actually it's current date
mkdir $DIR
endscript
daily
rotate 2
olddir /mylog/$DIR
missingok
compress
postrotate
       find /mylog -type d -mtime +180 | xargs rm -f
endscript
}

Logrotate 不理解 $DIR 是变量。

欢迎任何建议!

答案1

根据超级用户 @koniu 的说法,这不可能据我检查,我没有找到其他方法。

对于日志的年龄,您有一个maxage根据手册页的指令:

   maxage count
          Remove  rotated  logs  older  than <count> days. The age is only
          checked if the logfile is to be rotated. The files are mailed to
          the configured address if maillast and mail are configured.

看起来它对在 olddir 中移动的旧日志不起作用。

相关内容