如何使用logrotate在文件名中插入日期

Ber*_*fez 29 linux logrotate

我需要设置logrotate来从服务器上运行的应用程序中旋转日志文件.我需要文件名中的日期.

我设置了dateext和dateformat来添加 - 在日期中.结果文件名是:whatever.csv_2012-03-03

我希望时间戳成为文件名的一部分,保证扩展的安全性; Whatever_2012-03-03.csv.

Sté*_*ane 61

您应该能够将扩展分开,例如whatever.2012-03-03.csv,使用以下配置:

whatever.csv {
  dateext
  dateformat .%Y-%m-%d
  extension .csv
  ...
}
Run Code Online (Sandbox Code Playgroud)

注意dateext故意是空的.

  • 此外,它应该是`dateformat.%Y-%m-%d`(第一个点是日期,第二个点是扩展名).@chrisdew可能是因为你使用的是通配符,所以*logrotate*试图同时旋转`file.log`和`file.2014-01-07.log`.使用固定名称,或使用`olddir`选项将旋转的文件移动到不同的目录,这样它们就不会被通配符拾取. (3认同)

Ber*_*fez 23

要在旋转文件的同时在Linux下的文件的文件名(而不是扩展名)中插入日期,使用正确:

# Daily rotation
    daily

# We keep original file live
    copytruncate

# Rotation is 1 so we have always .1 as extension
    rotate 1

# If file is missing keep working
    missingok

    sharedscripts
    postrotate
            day=$(date +%Y-%m-%d)
            mv blabla.csv.1 /var/www/gamelogs/dir/blabla$day.csv
    endscript
}
Run Code Online (Sandbox Code Playgroud)

这很简单,工作正常.

  • @Rob,那么,实际使用logrotate有什么意义呢? (2认同)