Catalystで任意のファイルにログを出力する。
Catalystのデフォルト log メソッドは、ログを標準出力に表示します。
でも通常は任意のファイルに出力したいですよね。の調査。
利用するCPANは Catalyst::Log::Log4perl。
・アプリケーションクラスに Catalyst::Log::Log4perl 設定を追加する
$ vi lib/MyApp.pm use Catalyst qw/-Debug ConfigLoader Static::Simple/; +use Catalyst::Log::Log4perl; our $VERSION = '0.01'; (snip) __PACKAGE__->config( name => 'MyApp' ); +# set logger +__PACKAGE__->log( Catalyst::Log::Log4perl->new("$FindBin::Bin/../conf/log4perl.conf") ); + # Start the application __PACKAGE__->setup;
・ディレクトリ作成
$ cd MyApp $ mkdir logs $ mkdir conf
・log4perl用コンフィグファイル新規作成
$ vi conf/log4perl.conf +log4perl.logger = DEBUG, A1 +log4perl.appender.A1 = Log::Log4perl::Appender::File +log4perl.appender.A1.layout= Log::Log4perl::Layout::PatternLayout +log4perl.appender.A1.layout.ConversionPattern = [%d] [catalyst] [%p] %m%n +log4perl.appender.A1.filename = /who/am/i/MyApp/logs/myapp.log
・サーバー起動
$ cd MyApp $ ./script/myapp_server.pl
・ログ出力を確認
$ more logs/myapp.log
ログが出力されていればOk。