2011年4月11日月曜日

Log4jで環境変数を利用する

Log4jと環境変数をキーワードに訪れる方が見られるので、
ちょっとまとめてみることにしました。

まずLog4jの設定ファイルは、
環境変数の値を利用することが可能です。

利用する方法は、

${(環境変数の名前)} まちがいです。システムプロパティです。

とするだけです。
それだけで読み込んだときに環境変数の値に置換されます。
設定値となる場所ならどこでも使えるはずです。

例えばtomcatでLog4jを使う場合は、

${catalina.home}/logs/trace.log

なんて書き方ができます。
これでtomcatのlogsフォルダへログを出力できます。

アペンダの参照を環境変数で定義すれば、
起動方法によってログの出力先を変更するようなこともできます。

地味に応用範囲が広いので、
使い方を練習しておくと得するかも?


2012/08/30追記:
すいませんでしたぁ!!
環境変数ではなくシステムプロパティでした!
手っ取り早い話は、星野政利の日記を参照してください。
一言コメントをもらったら直したというのに…恥をさらしまくっていたよ~

ちなみに起動時のオプション以外でどうにかしたい場合は、
以下のコードとかで環境変数をシステムプロパティに注ぎ込むって手もあります。

// 環境変数をシステムプロパティへ代入する
Properties property = System.getProperties();
Map env = System.getenv();
for (Map.Entry keyValue : env.entrySet()) {
    if (!property.containsKey(keyValue.getKey())) {
        property.setProperty(keyValue.getKey(), keyValue.getValue());
    }
}

え?邪道?

ですよね~

0 件のコメント:

コメントを投稿