LoginSignup
27
27

More than 5 years have passed since last update.

logrotate でデフォルト以外のフォーマットで日付ファイル名にしたいとき

Posted at

logrotate でデフォルト以外のフォーマットで日付ファイル名にしたい場合の設定についてまとめます。

デフォルト

logrotate で日次ローテート+日付文字列を付けたい場合、
dailydateext を指定します。

/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 になります。

27
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
27