Log::Log4perlの設定値に変数や関数も使える
はじめに
d:id:ZIGOROu:20061105:1162736838の続き的な内容です。
Perlでのhookの制約
但し制約があります。このhookの中で呼び出せるユーザー関数はmainパッケージで定義されている必要があります。
例えばlogのファイル名の部分を前回の例では、
log4perl.appender.A1.filename = ../logs/myapp.log
としましたが、例えばmyapp_server.plとかで、
use Path::Class; use Catalyst::Utils; sub log_file { file(Catalyst::Utils::home('MyApp') . '/logs', 'myapp_log')->stringfy; }
なんて定義してやれば、
log4perl.appender.A1.filename = sub { &log_file(); }
なんて記述が出来ます。