syslog のローテート設定

Linux ならログ管理は syslog を利用すると大変便利で、Apache + mod_perl の負荷分散として導入する Pound とかのログやアプリケーションログも syslog に任せてしまっている。

syslog 経由でログを出力したい場合、/etc/syslog.conf に設定を記述してやればよく、例えば、
local0.*      /var/log/applog
なんて記述を追加してあげて、Perl からは、
use Sys::Syslog;
openlog(__FILE__, 'cons,pid', 'local0');
syslog('info', 'this is test message!!');
closelog();
で完了だ。自前でログ管理モジュールを作るよりも Linux の機能として一元管理できて大変便利です。忘れてならないのが(僕は忘れていたので、備忘録としてこの記事を書いているわけで・・・)ログローテートの設定をしてあげないと、Linux のファイルサイズ最大値 2G の壁でログが取得できないどころか、サービス停止なんてことにもなってしまいます。設定方法は、
ディレクトリ /etc/logrotate.d にそれぞれのログの設定を記述したファイルを作成すればよい。例えば pound のログのローテート設定ファイルなら、/etc/logrotate.d/pound なんてファイル名で
/var/log/pound {
    missingok
    notifempty
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/pound_pid.* 2>/dev/null` 2> /dev/null || true
    endscript
}
みたいに作成すればOKだ。動作確認に関しては、
/usr/sbin/logrotate /etc/logrotate.d/pound 
のように直接コマンドを叩いてみてログがローテートされているかをみればよい。ちなみに、syslog 関連についてはこのページが参考になりました。
- スポンサーリンク -