日向夏特殊応援部隊

俺様向けメモ

Log::Log4perlの設定値に変数や関数も使える

はじめに

d:id:ZIGOROu:20061105:1162736838の続き的な内容です。

Log::Log4perlのドキュメント

と思いっきり書いてあります。

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(); }

なんて記述が出来ます。