【Linux】ログ世代管理 ~ logrotate ~

■ ログ世代管理(ログのローテーション)を行うには...

 * logrotate を使用する

■ logrotateの前提条件

ログローテーションはcronで動いているので、crondを確認
sudo systemctl status crond

 => 動いていなかったら、「sudo systemctl start crond」

■ どうすればいい?

/etc/logrotate.d/下にサービスごとの設定ファイルを用意する
/etc/logrotate.d/【サービスの設定ファイル】
設定ファイルの確認
logrotate -dv /etc/logrotate.d/【サービスの設定ファイル】

 * -dオプション
  => 実際にlogrotateは行われずに、どのように動作するのかをデバッグすることができる

 * -vオプション
  => 詳細を標準出力に表示
設定反映
logrotate /etc/logrotate.d/【サービスの設定ファイル】

logrotate -f /etc/logrotate.d/【サービスの設定ファイル】
 * -fオプション
  => 強制実行

【例】 /etc/logrotate.d/tomcat

sudo vi /etc/logrotate.d/tomcat
# weekly
/usr/tomcat/logs/catalina.out {
 missingok     # ログファイルが無くてもエラーを出さない
 notifempty    # ログファイルが空ならローテートしない
 copytruncate  # 対象のファイルをコピーしてから、オリジナルのログファイルの内容を切り詰める 
 weekly        # 週でローテート
 rotate 4      # 残す世代数
 delaycompress # 次回のログローテーションサイクルになるまで圧縮しない
 create 0644 tomcat tomcat # ログファイルのパーミッションと所有ユーザの設定
}

# daily
catalina.*.log
localhost.*.log
manager.*.log
host-manager.*.log
localhost_access_log.*.txt {
 missingok     # ログファイルが無くてもエラーを出さない
 notifempty    # ログファイルが空ならローテートしない
 copytruncate  # 対象のファイルをコピーしてから、オリジナルのログファイルの内容を切り詰める
 daily         # 日でローテート
 rotate 31     # 残す世代数
 delaycompress # 次回のログローテーションサイクルになるまで圧縮しない
 create 0644 tomcat tomcat # ログファイルのパーミッションと所有ユーザの設定
}
設定反映
sudo logrotate /etc/logrotate.d/tomcat


関連記事

TomcatTomcat ログあれこれ

https://blogs.yahoo.co.jp/dk521123/33222763.html