35

我需要设置 logrotate 来轮换服务器上运行的应用程序的日志文件。我需要文件名中的日期。

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

我希望时间戳成为文件名的一部分,以确保扩展名的安全;不管_2012-03-03.csv。

4

2 回答 2

71

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

whatever.csv {
  dateext
  dateformat .%Y-%m-%d
  extension .csv
  ...
}

注意dateext是故意为空的。

于 2012-08-02T13:27:48.873 回答
27

要在 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
}

这很简单并且工作正常。

于 2012-03-05T12:32:11.757 回答