ブラックボックス

プログラミングのノウハウやライフハックをどんどん投稿していきたい

Mar 4, 2020 - 1 minute read - ノウハウ

【logrotate】設定の妥当性をテストする

ログファイルを勝手にローテーションしてくれるlogrotateだが、オリジナルのアプリケーションのローテーション設定に不正がないかチェックするコマンド。実行結果の意味など、細かい説明は一旦端折っている。
あまり使わないがたまに使うので、備忘の為に記載する。

下記のように-dコマンドをつけてlogrotateコマンドを実行すれば良い。

$ logrotate -d 【設定ファイルのパス】

/etc/logrotate.conf には下記のように /etc/logrotate.d/以下の設定ファイルをincludeする記述がある為、設定ファイルのパスにこれを指定すると実際にローテーションされるファイル全ての妥当性をチェックすることとなる。

include /etc/logrotate.d

nginxのローテーションチェックを行うと下記のような出力となった。

$ logrotate -d /etc/logrotate.d/nginx
reading config file /etc/logrotate.d/nginx
reading config info for /var/log/nginx/*/*log

Handling 1 logs

rotating pattern: /var/log/nginx/*/*log  after 1 days (10 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/nginx/xxxxx/access.log
  log does not need rotating
considering log /var/log/nginx/xxxxx/error.log
  log does not need rotating
not running postrotate script, since no logs were rotated

試しに設定ファイルを下記のように不正な状態として実行してみる(2行目に余計な「a」を記述)。

/var/log/nginx/*/*log {
    a
    create 0664 nginx root
    :
    :
}
$ sudo logrotate -d /etc/logrotate.d/nginx
reading config file /etc/logrotate.d/nginx
reading config info for /var/log/nginx/*/*log
error: /etc/logrotate.d/ngin:2 unknown option 'a' -- ignoring line

エラーが検知される。