設定ファイルを指定して、logrotateを実行する
ログのローテーション処理は重要なのですが、実装が何気に面倒だったりします。
今回はシステム全体のログローテート処理用のものとは別の設定ファイルを用意して、
logrotateを使おうというお話です。
今回の想定を以下にまとめます。
ちなみにOSはCentOSを使っています。
- ログローテート設定ファイル
viで「/home/myuser/conf/mylog.conf」を設定ファイルとして作成します。
中はこのような設定です。
$ cat /home/myuser/conf/mylog.conf /home/myuser/work/mylog { copytruncate daily rotate 5 compress missingok }
- ログローテートステータスファイル
touchコマンドで「/home/myuser/conf/logrotate.status」を作っておきます
- ログローテート対象ログファイル
ログローテート対象とするログファイルは「/home/myuser/work/mylog」とします。
設定ファイルのデバッグ
「logrotate」は「-f」でログローテーション用の設定ファイルを指定することが出来ます。
まずは、デバッグモードで設定ファイルを読み込んでみます。
「-v」オプションを付けて、詳細を標準出力に表示させます。
$ /usr/sbin/logrotate -v -d -f /home/myuser/conf/mylog.conf reading config file /home/myuser/conf/mylog.conf reading config info for /home/myuser/work/mylog Handling 1 logs rotating pattern: /home/myuser/work/mylog forced from command line (5 rotations) empty log files are rotated, old logs are removed considering log /home/myuser/work/mylog log needs rotating rotating log /home/myuser/work/mylog, log->rotateCount is 5 renaming /home/myuser/work/mylog.5.gz to /home/myuser/work/mylog.6.gz (rotatecount 5, logstart 1, i 5), renaming /home/myuser/work/mylog.4.gz to /home/myuser/work/mylog.5.gz (rotatecount 5, logstart 1, i 4), renaming /home/myuser/work/mylog.3.gz to /home/myuser/work/mylog.4.gz (rotatecount 5, logstart 1, i 3), renaming /home/myuser/work/mylog.2.gz to /home/myuser/work/mylog.3.gz (rotatecount 5, logstart 1, i 2), renaming /home/myuser/work/mylog.1.gz to /home/myuser/work/mylog.2.gz (rotatecount 5, logstart 1, i 1), renaming /home/myuser/work/mylog.0.gz to /home/myuser/work/mylog.1.gz (rotatecount 5, logstart 1, i 0), copying /home/myuser/work/mylog to /home/myuser/work/mylog.1 truncating /home/myuser/work/mylog compressing log with: /bin/gzip removing old log /home/myuser/work/mylog.6.gz
実行
実行結果確認のために「-v」オプションを付けて実行します。
またログローテートステータスファイルを「-s」オプションで指定します。
$ /usr/sbin/logrotate -v -f /home/myuser/conf/mylog.conf -s /home/myuser/conf/logrotate.status reading config file /home/myuser/conf/mylog.conf reading config info for /home/myuser/work/mylog Handling 1 logs rotating pattern: /home/myuser/work/mylog forced from command line (5 rotations) empty log files are rotated, old logs are removed considering log /home/myuser/work/mylog log needs rotating rotating log /home/myuser/work/mylog, log->rotateCount is 5 renaming /home/myuser/work/mylog.5.gz to /home/myuser/work/mylog.6.gz (rotatecount 5, logstart 1, i 5), old log /home/myuser/work/mylog.5.gz does not exist renaming /home/myuser/work/mylog.4.gz to /home/myuser/work/mylog.5.gz (rotatecount 5, logstart 1, i 4), old log /home/myuser/work/mylog.4.gz does not exist renaming /home/myuser/work/mylog.3.gz to /home/myuser/work/mylog.4.gz (rotatecount 5, logstart 1, i 3), old log /home/myuser/work/mylog.3.gz does not exist renaming /home/myuser/work/mylog.2.gz to /home/myuser/work/mylog.3.gz (rotatecount 5, logstart 1, i 2), old log /home/myuser/work/mylog.2.gz does not exist renaming /home/myuser/work/mylog.1.gz to /home/myuser/work/mylog.2.gz (rotatecount 5, logstart 1, i 1), old log /home/myuser/work/mylog.1.gz does not exist renaming /home/myuser/work/mylog.0.gz to /home/myuser/work/mylog.1.gz (rotatecount 5, logstart 1, i 0), old log /home/myuser/work/mylog.0.gz does not exist log /home/myuser/work/mylog.6.gz doesn't exist -- won't try to dispose of it copying /home/myuser/work/mylog to /home/myuser/work/mylog.1 truncating /home/myuser/work/mylog compressing log with: /bin/gzip
実行結果を見てみます。
ログローテーションされています。
$ ls -la /home/myuser/work/ 合計 28 drwxr-xr-x 2 myuser myuser 4096 1月 5 00:13 . drwx------ 4 myuser myuser 4096 1月 5 00:06 .. -rw-r--r-- 1 myuser myuser 0 1月 5 00:13 mylog -rw-r--r-- 1 myuser myuser 32 1月 5 00:13 mylog.1.gz
指定したログローテートステータスファイルも見てみます。
ローテートのステータスが書き込まれています。
$ cat /home/myuser/conf/logrotate.status logrotate state -- version 2 "/home/myuser/work/mylog" 2011-1-5
このようにすると、システム全体のログローテーション処理から、
特定の処理を切り出すことが可能かと思います。
今日はこんな所で。