実行時にモジュールをロギングするようにしたいのですが、すべてが単一のモノリシックな設定ファイルを参照する必要はありません。異なる権限で実行されているプロセスを扱う場合、システムのすべてのログにアクセスできるようにするために、各プロセスに対処する必要はありません。Log4perl:実行時にアペンダーを動的にロードするにはどうすればよいですか?
しかし、実行時に構成ファイルから追加のアペンダーを初期化する方法については、Log4perlのマニュアルで多くのドキュメントが見つかりません。 http://metacpan.org/pod/Log::Log4perl::Appenderはadd_appenderメソッドを参照しますが、これはconfファイルの代わりにインスタンス化されたappenderオブジェクトで機能します。また、ロガーオブジェクトとlogger-> appender関係も定義しません。
私は独自のconfから各パッケージのinitを試してみましたが、初期化するたびに既存のconfigをclobbersするだけです。私がしたいのは、次の行に沿った何かです:
どのように解析して現在の設定に追加できますか?
編集:パッケージ変数を使用するProbalemは、さまざまなクラスによって消費されるMooseの役割であり、かなり多くのMooseX :: Role :: ParameterizedバージョンのEtherの回答はMaking self-logging modules with Log::Log4perlです。したがって、私のロガーはそれを消費するライブラリに構成されており、私はそれを使うたびに動作するグローバル変数を持っていません。私はMooseX ::役割の外でグローバル変数を宣言する場合は::パラメータ化された役割ブロックを
けれども...
、役割を消費一人ひとりのクラスは、同じconfに変数を使用することでしょうか?
誰でも?私はLog4perlのソースをちょっと見てきましたが、これをやりたかった最初の人になることはできません。 configファイルをロールに渡すことができるクラスに適用できるMoose paramererizedロールを作成しようとしています。confファイルを初期化するか、confファイルの設定を現在の初期化されたファイルに追加するだけで正しいことができます。 Log4perl。 – Oesor
@Oesor:パッケージグローバルは、Mooseの役割で宣言されていても、引き続きグローバルです。ロールを使用するために以下のソリューションを変更するのは簡単です( 'BUILD'メカニズムの代わりに' BUILDARGS'を非常によく似たコードで使用できます)。 – bvr
@Oesor:前のコメントごとに以下のコードを更新しました。 – bvr