Amon2のロギングにLog::Handlerを使う
Amon2でログを取るにはLog::Minimalが推奨されている。
Log::Minimalが推奨されているけどファイルに書き出すのにコード書く必要があるっぽいので別のモジュールを探す。
- ログモジュールのベンチマーク - Perl勉強メモ アルパカDiary出張版
- hachiojipm/awesome-perl #Logging
- Log::Log4perlによるamon2のLogging - end0tknr's kipple - 新web写経開発
Awesome PerlにLog::Minimalの他にはLog::DispatchとLog::Log4perlが掲載されている。ベンチマークのエントリーではCPAN本おすすめのLog::Handlerが良さそうだったので、試しに実装してみる。
Log::Handlerの特徴
- コンソールへのログ出力
- 複数ファイルへのログ出力を設定可
他、DBIと絡めたり、メール送ったり、SOCKETで別サーバに送ったりも出来る。
Log::Handler::Examples - Examplesを読むと色々参考になる。
仕様
- $ENV{'PLACK_ENV'}がdevelopmentかproductionかで切り分けて、開発時にはscreen(ターミナルへ出力)とdebugログ(ファイル)にも出力させるようにしておく。
- $cにmethod生やしておいて、
$c->log->info()
で呼べる。debugだけは$c->debug()
でも呼べるようにエイリアス化しておく。 - ログファイルはとりあえずdebug.log、common.log、error.logとし、Myapp/var/log以下に保存する。
- ロギングの設定は各モードで共有としておく。
- 【Amon2のオレオレTips】Configのカスタマイズ したい~追記あり~ | hirobanex.netを参考にauthorのおすすめ方式で。
- warnまたはdieの時にはsignalを受け取ってログを吐くようにしておく。
該当コミット
https://github.com/clicktx/p5-App-Amozon/commit/aef903bb123094f9fd3a67a4be5f5a8d7cfd451d
使う
package Amozon::Web::C::Root;
use strict;
use warnings;
use utf8;
sub index {
my ($class, $c) = @_;
# debug
$c->log->debug("debug message");
$c->debug("debug message(alias)");
# info
$c->log->info("info message");
# dump
$c->log->dump($c);
my $counter = $c->session->get('counter') || 0;
$counter++;
$c->session->set('counter' => $counter);
return $c->render('index.tx', {
counter => $counter,
});
}
-
前の記事
OS X (El Capitan)で PhantomJS+Selenium::Remote::Driver (Selenium::PhantomJS) を試す 2015.12.15
-
次の記事
Minillaを触ってみる 2016.03.28