Log4perlでsyslogに出力するには、Log::Dispatch::Syslog を使用するとのことです。
ですが、実験環境ではすんなりと行きませんでした。
■モジュール群のインストール(大変でした)
> perl -MLog::Dispatch::Syslog -e ''
で、エラーが続出、結局以下のモジュールをインストールすることに
- Config-IniFiles-2.58
- IO-1.25
- Sys-Syslog-0.27
- ExtUtils-Install-1.54
- ExtUtils-Command-1.16
- ExtUtils-Manifest-1.58
- ExtUtils-MakeMaker-6.56
- Software-License-0.101410
- Pod-Readme-0.10
- Log-Dispatch-2.26
- ExtUtils-CBuilder-0.2703
- ExtUtils-ParseXS-2.2205
- Test-Harness-3.21
- YAML-Tiny-1.41
- Compress-Raw-Bzip2-2.027
- Compress-Raw-Zlib-2.027
- IO-Compress-2.027
- IO-Zlib-1.10
- Package-Constants-0.02
- Algorithm-Diff-1.15
- Text-Diff-0.35
- Archive-Tar-1.60
- Module-Build-0.3607
- Attribute-Handlers-0.88
- Params-Validate-0.95
インストールするサーバーが外部と接続ができないため、ガリガリとダウンロードしては、インストールして、依存関係があって、またダウンロードして、、、というのを繰り返す羽目に。
ネットに繋がっていればCPANビルドで一発なんですがね。
で、一番困ったのが「Params-Validate」のインストールです。
他のものはいつものようにMakefile.PLを使ってのインストールだったのですが、Build.PLなんて初めてでした。
とりあえず以下の流れで。
> perl ./Build.PL install_base=$HOME/perl5
> ./Build
> ./Build test
> ./Build install
これで準備OKです。
■Syslogを試す
まずは前回のサンプルlog-sample02.plを使います。
次に定義ファイルの内容です。以下のような感じになります。
- log4perl.conf -
log4perl.rootLogger=INFO, SYSLOG
log4perl.appender.SYSLOG=Log::Dispatch::Syslog
log4perl.appender.SYSLOG.min_level=info
log4perl.appender.SYSLOG.ident=myprocess
log4perl.appender.SYSLOG.facility=user
log4perl.appender.SYSLOG.layout=PatternLayout
log4perl.appender.SYSLOG.layout.ConversionPattern=%d %p %c - %m%n
これで、以下のように実行します。
> ./log-sample02.pl
Message from syslogd@libm01 at Fri May 28 12:50:28 2010 ...
libm01 myprocess: 2010/05/28 12:50:28 FATAL hoge.foo.bar - これは致命的なメッセージです。
バッチリと思いきや、FATALメッセージだけコンソールにも出てきてしまいました。何でなんでしょう?
と思いつつ、今日はこのあたりで。