syslog のローテート設定
Linux ならログ管理は syslog を利用すると大変便利で、Apache + mod_perl の負荷分散として導入する Pound とかのログやアプリケーションログも syslog に任せてしまっている。
syslog 経由でログを出力したい場合、/etc/syslog.conf に設定を記述してやればよく、例えば、
ディレクトリ /etc/logrotate.d にそれぞれのログの設定を記述したファイルを作成すればよい。例えば pound のログのローテート設定ファイルなら、/etc/logrotate.d/pound なんてファイル名で
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 関連についてはこのページが参考になりました。
- スポンサーリンク -
コメントやシェアをお願いします!