logrotate でデフォルト以外のフォーマットで日付ファイル名にしたい場合の設定についてまとめます。
デフォルト
logrotate で日次ローテート+日付文字列を付けたい場合、
daily
と dateext
を指定します。
/path/to/target/some.log
{
rotate 36500
daily
dateext
missingok
notifempty
delaycompress
nocompress
copytruncate
}
結果、 元のファイル名 + -YYYYMMDD
のファイル名で生成されます。
上記の例で、2016/06/08実行したとしたら /path/to/target/some.log-20160608
になります。
任意のフォーマットに変更する
末尾に付与する日付を任意のフォーマットに変更したい場合は
dateformat
を指定します。
/path/to/target/some.log
{
rotate 36500
daily
dateext
dateformat _%Y-%m-%d
missingok
notifempty
delaycompress
nocompress
copytruncate
}
結果、 元のファイル名 + _YYYY-MM-DD
のファイル名で生成されます。
上記の例で、2016/06/08実行したとしたら /path/to/target/some.log_2016-06-08
になります。
末尾以外の場所に日付を挿入する
末尾以外の場所に日付を挿入したい場合は postrotate
で名前を変更します。
/path/to/target/some.log
{
rotate 36500
daily
dateext
dateformat _%Y-%m-%d
missingok
notifempty
delaycompress
nocompress
copytruncate
postrotate
mv /path/to/target/some.log-`date '+%Y%m%d'` /path/to/target/some.`date '+%Y-%m-%d'`.log
endscript
}
結果、 元のファイル名(拡張子抜き) + .YYYY-MM-DD.log
のファイル名で生成されます。
上記の例で、2016/06/08実行したとしたら /path/to/target/some.2016-06-08.log
になります。