Sys::Syslogを使ってロギング
PerlでSyslogへの出力を行いたい時は、Sys::Syslogを使うと簡単に出力できます。
出力先のファイルは/etc/syslog.confにて設定を行います。以下を追加しました。local6というファシリティを利用する前提。syslogはlocal0からlocal7まで自由に設定できるようになっているので6というのは適宜変更してください。
local6.* /var/log/{ログファイル名}
confを変更したときは、syslogdの再起動が必要です。
$ ps axuw | grep [s]yslogd $ kill -HUP {syslogdのpid}
で再起動をします。
以下のようにログを出力します。
#!/usr/bin/perl use Sys::Syslog qw(:DEFAULT setlogsock); #Unixドメインソケットを通じて出力する setlogsock 'unix'; #ログ出力元, 出力方式, ファシリティ openlog(__FILE__, 'pid', 'local6'); #優先度, ログメッセージ syslog('notice', 'message'); closelog();
syslog経由でログを出力しておくと、ネットワークを通じて他のサーバにログを送信するなどの設定が簡単にできるので便利ですね。