音楽に関する話題、プログラムに関する話題、ジョギングに関する話題、後は日々気になったことを綴っていきます。
ザ☆ミュージシャンズ・プログラマー - Exploring Music & Programming -



Log4perlでsyslogに出力するには、Log::Dispatch::Syslog を使用するとのことです。
ですが、実験環境ではすんなりと行きませんでした。

■モジュール群のインストール(大変でした)
> perl -MLog::Dispatch::Syslog -e ''
で、エラーが続出、結局以下のモジュールをインストールすることに

  1. Config-IniFiles-2.58
  2. IO-1.25
  3. Sys-Syslog-0.27
  4. ExtUtils-Install-1.54
  5. ExtUtils-Command-1.16
  6. ExtUtils-Manifest-1.58
  7. ExtUtils-MakeMaker-6.56
  8. Software-License-0.101410
  9. Pod-Readme-0.10
  10. Log-Dispatch-2.26
  11. ExtUtils-CBuilder-0.2703
  12. ExtUtils-ParseXS-2.2205
  13. Test-Harness-3.21
  14. YAML-Tiny-1.41
  15. Compress-Raw-Bzip2-2.027
  16. Compress-Raw-Zlib-2.027
  17. IO-Compress-2.027
  18. IO-Zlib-1.10
  19. Package-Constants-0.02
  20. Algorithm-Diff-1.15
  21. Text-Diff-0.35
  22. Archive-Tar-1.60
  23. Module-Build-0.3607
  24. Attribute-Handlers-0.88
  25. 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メッセージだけコンソールにも出てきてしまいました。何でなんでしょう?

と思いつつ、今日はこのあたりで。



コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




今日は Log4perl を試してみました。
実験マシンはSolaris10です。
まずはCPANから最新版を取得します。Log4perl(1.28)

■インストールする

一応サーバーの管理者なのでroot権限でデフォルトで入れれますが、お試しなので、通常ユーザーのディレクトリ(ホーム直下にperl5をこしらえます)にインストールしました。

> gzcat Log-Log4perl-1.28.tar.gz | tar xvf -

> rm Log-Log4perl-1.28.tar.gz

> cd Log-Log4perl-1.28

> mkdir $HOME/perl5

> perl Makefile.PL PREFIX=$HOME/perl5 INSTALLMAN1DIR=$HOME/perl5/man/man1 INSTALLMAN3DIR=$HOME/perl5/man/man3

> make

> make test

> make install

これでインストールは完了です。

自分としてはいつもやるのですが、バージョン確認です。

> /bin/perl -I$HOME/perl5/lib -I$HOME/perl5/lib/site_perl -MLog::Log4perl -e 'print $Log::Log4perl::VERSION,"\n"'
1.28

インクルード・ディレクトリの指定は面倒なので、ログイン・シェルに以下を追加しました。

setenv PERL5LIB /export/home/ladm/perl5/lib:/export/home/ladm/perl5/lib/site_perl

※ちなみに、ログイン・シェルはtcshです。BournShellの場合は以下のようになります。

PERL5LIB=/export/home/ladm/perl5/lib:/export/home/ladm/perl5/lib/site_perl; export PERL5LIB

> /bin/perl -MLog::Log4perl -e 'print $Log::Log4perl::VERSION,"\n"'
1.28

■サンプルを試す(1)

定義ファイル不要で、標準出力にメッセージを出力します。

- log-sample01.pl -

  1. #!/bin/perl
  2. use strict;
  3. use Log::Log4perl qw(:easy);
  4. #
  5. Log::Log4perl->easy_init($INFO);
  6. #
  7. DEBUG "このメッセージはどこにもでません。";
  8. INFO "これは情報メッセージです。";
  9. WARN "これは警告メッセージです。";
  10. ERROR "これは障害メッセージです。";
  11. FATAL "これは致命的なメッセージです。";
  12. exit 0;

> ./log-sample01.pl
2010/05/28 00:39:53 これは情報メッセージです。
2010/05/28 00:39:53 これは警告メッセージです。
2010/05/28 00:39:53 これは障害メッセージです。
2010/05/28 00:39:53 これは致命的なメッセージです。

★DEBUGを出したい場合は、5行目の$INFOを$DEBUGにすればよい(^^♪

■サンプルを試す(2)

定義ファイルを使って、ログ・ファイルにメッセージを出力します。

- log-sample02.pl -

  1. #!/bin/perl
  2. use strict;
  3. use Log::Log4perl;
  4. #
  5. Log::Log4perl::init('/tmp/log4perl.conf');
  6. my $logger = Log::Log4perl->get_logger('hoge.foo.bar');
  7. #
  8. $logger->debug('これはデバッグメッセージです。');
  9. $logger->info('これは情報メッセージです。');
  10. $logger->warn('これは警告メッセージです。');
  11. $logger->error('これは障害メッセージです。');
  12. $logger->fatal('これは致命的なメッセージです。');
  13. exit 0;

- /tmp/log4perl.conf -(定義ファイル)

デバッグ以上をログ・ファイルに、情報以上を標準出力へ

  1. log4perl.rootLogger=DEBUG, LOGFILE
  2. log4perl.logger.hoge.foo.bar=INFO, OUT
  3. #
  4. log4perl.appender.LOGFILE=Log::Log4perl::Appender::File
  5. log4perl.appender.LOGFILE.filename=sample02.log
  6. log4perl.appender.LOGFILE.mode=append
  7. log4perl.appender.LOGFILE.layout=PatternLayout
  8. log4perl.appender.LOGFILE.layout.ConversionPattern=%d %p %c - %m%n
  9. #
  10. log4perl.appender.OUT=Log::Log4perl::Appender::Screen
  11. log4perl.appender.OUT.layout=PatternLayout
  12. log4perl.appender.OUT.layout.ConversionPattern=%d %p %c - %m%n

とりあえず、今日はこのあたりで。



コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする