2011年1月17日月曜日

Log4jで環境変数以外のキーワードを追加したい場合

見事に三日坊主…は置いといて、
初めて技術的な話題に触れるとします。

Log4jの設定ファイルでは、
${キー名}みたいな書式で環境変数を参照できます。
 ただ環境変数以外のキーを用意したい場合は、
ちょっと困ってしまいました…(遠い目)

1.3のJoranConfiguratorを使えばいいじゃない

というわけでハッキングです。
DOMConfiguratorを少々(?)いじることにします。

まずはDOMConfiguratorのソースを、
まるごと別のクラスへ移植します。
DOMConfiguratorCustomとかが良い感じでしょうかね?

その中にProperties propsというメンバ変数があるので、
とりあえずSetterメソッドを用意してやります。
setPropsとか、setPropertiesあたりが手頃でしょうか。

後はこんな感じで使います。
DOMConfiguratorCustom config = new DOMConfiguratorCustom();
config.setProps(追加するプロパティ);
config.doConfigure(設定ファイルのパス, LogManager.getLoggerRepository());

コンストラクタにしたり、
staticメソッドにするのはお好みでどうぞ~

ちなみにソースを全コピーしたのは、
クラスを継承してpropsに問い合わせたらIllegalAccessErrorが起こったからです。
多分コンパイラのバージョンクラスローダーが違うからかな~?

もっと簡単な抜け道があったら、
教えて!エライ人!

追記:どうにかしたのはこちら

0 件のコメント:

コメントを投稿