LogWatchでLogbackが出力したログをチェックするスクリプトをつくってみた

JavaアプリはLogbackを使ってログを出力している。出来ればこいつもLogWatchに一緒に監視してもらいたい。
perlで単純にログレベルの文字列を引っ掛けてやれば簡単にできそうなので、早速スクリプトを作ってみた。

で、どう作ればいいのかというと/etc/logwatch配下にスクリプトを書いておけばOK。(LogWatchのインストールの仕方にもよると思うが)
自分の環境では、スクリプトファイルと設定ファイルを以下のように配置した。


/etc/logwatch/scripts/services/myapp
/etc/logwatch/conf/logfiles/myapp.conf
/etc/logwatch/conf/services/myapp.conf

conf/servicesにあるmyapp.confが設定ファイル。
中身は、ログのタイトルとログファイル設定を別にしているため設定ファイルの指定をしている。

conf/logfiles/myapp.confはログファイルの設定。
設定内容は対象ログファイルの場所と、ローテーションした場合の過去ファイルの形式を指定。
さらに、*ExpandRepeatsを指定して日付が変わって一回のログチェックで監視したいログファイルが分割されてもいいようにする。で、その動作を指定した時にはLogwatchがログレコードの日時を認識できなきゃいけないわけだが、*applyeurodateを指定しつつLogbackの日時の出力形式を%d{yyyy-MM-dd HH:mm:ss SSS}とする(秒とミリ秒の間にスペースをスペースで分割)ことでeurodate形式で読み込めるようにしている。

scripts/servicesのmyappがperlスクリプト。conf/servicesの○○.confの名前といっしょにするのがポイントらしい。
中身はすごい単純。。。

以下ソース。
/etc/logwatch/scripts/services/myapp
/etc/logwatch/conf/logfiles/myapp.conf
/etc/logwatch/conf/services/myapp.conf
の順