log4jではまったのでメモしておく

昨日もlog4jについて書いたばかりだが、使ってみて早速はまったのでメモしておく。

自前の log4j.properties が読み込まれない

現象

クラスパスの先頭に同ファイルを配置してもなお読み込まれない。

原因

- log4jの設定ファイルを含んでいる jar をクラスパスに含めていた
- その設定ファイルは log4j.xml であった
以前の日記で記載したように、log4jの設定ファイルはpropertiesよりもxmlが優先される。

対応

- 案1: 必須でない jar であれば、クラスパスから外してやる
- 案2: 自前の設定ファイルをxml形式に書き換える

log4j.properties 内で環境変数を参照できない

現象

${変数名}で環境変数を参照できると聞いたのでやってみたが、空文字になってしまう。
環境変数の export もしてみたがかわらず。

原因

どうやら、参照できるのは環境変数ではくJavaシステムプロパティであったようだ。

対応

javaコマンドのオプションに -D変数名=値 を指定したところ、変数を参照できた。
よって、環境変数を参照したいときは -D変数名=${環境変数名} としてやればよい。