CentOS環境 スクリプトのログにlogrotateを採用。きちんとログローテートできてた例 シェル

CentOS環境 スクリプトのログにlogrotateを採用。きちんとログローテートできてた例

作成したbashスクリプトのログ対応で、logrotateを採用
アプリのソースを変更なしにログローテート可能。

★環境
# cat os-release
NAME= CentOS Linux
VERSION= 7 (Core)
ID= centos

★対象ログファイル

# ls -l /home/work/logrotate_test/test1.log

★ログ設定ファイル
# cat /etc/logrotate.d/hoge_script
/home/work/logrotate_test/*.log {
daily
rotate 31
dateext
dateformat _%Y%m%d
notifempty
create 0600 root root
missingok
}

★オプション説明
・daily # 毎日実行
・rotate 31 # 31日間保持
・dateext # ローテーションしたログのsuffixに番号ではなく、日付8桁(-YYYYMMDD) をつける。
・dateformat _%Y%m%d # 日付フォーマットを指定。
・notifempty # ログファイルが空ならスキップ
・create 0600 root root # ローテーション後に空のログファイルを新規作成
・missingok # 指定のログファイルがなくても処理続行


★実行してみる(動作確認で一時的に実行)
sudo /usr/sbin/logrotate -f /etc/logrotate.d/hoge_script

★恒久設定 反映
sudo /usr/sbin/logrotate /etc/logrotate.conf


★実行例
・前状態
# ls -ltr /home/work/logrotate_test/
-rw-r--r-- 1 root root 16 May 25 20:06 test1.log

・コマンド実行
# sudo /usr/sbin/logrotate -f /etc/logrotate.d/hoge_script

・コマンド実行後状態
# ls -ltr /home/work/logrotate_test/
-rw-r--r-- 1 root root 16 May 25 20:06 test1.log_20220525
-rw------- 1 root root 0 May 25 20:08 test1.log