0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

logrotateで大量のログを扱う

Posted at

logrotateを使って大量のログを切り替える

大量のログファイルが生成されるディレクトリを切り替える必要があり、logrotateが使えるかもしれない、と思ってやってみました。

2段階のconfigで実現

しかしこれでいいのか自信がありません。
そもそも大量のログを吐き出すのが間違いのような気もします。

# 1段階目。catで全ログを1ファイルにまとめる
/path/to/many/logfiles/* {
    weekly
    firstaction   # ローテーションの前に以下を実施 = concatnated ファイルに全ログをcatする (ログファイルが存在する場合)
        if ls /path/to/many/logfiles/* > /dev/null 2>&1; then
          for file in /path/to/many/logfiles/*; do echo "== $file =="; stat $file; echo ""; cat $file; echo "";done >> /path/to/log/concatnated
        fi
    endscript
    rotate 0      # ローテーションはしない = ログを削除する
    missingok     # 対象ログがなくてもエラーにしない
}

# 2段階目。まとめたファイルをローテーション
/path/to/log/concatnated {
    weekly
    rotate 50
    compress
    dateext
    missingok
}

注意点

  • ディレクトリごと切り替える、ことはできないようなので諦め。
  • rotate 0 にしているので、1段階のパスに誤りがあるとログが全部消えます。
  • 1つにまとめたファイル concatnated は、単にログをくっつけただけではなく、ファイル名はstatコマンドによる情報も貼り付けています。
    ファイル名そのものが情報である場合のためです。
0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?