10/24 さぁ今日最後のトレーニングだ!
10/29 log4j2の設定ファイルをJavaプログラム内で動的に設定する |
お仕事でlog4jを使うことになり、以下の状況でちょっとハマったのでメモを残します。
・実行するJAVAプログラムは外部からJAR呼び出しを行う(-jarオプションを使用する)
・環境変数(クラスパス)への追加は避けたい(というか-jar呼び出しを行う時点で環境変数のクラスパスが無効になる)
・任意の場所に設定ファイルを配置したい
・Javaの起動引数への追加も出来ない(呼び出しは別のシステムの管轄なので)
要するにJavaプログラム内でlog4jの設定ファイル読込をしたいということ。
以上、状況説明。
以下、対応。
Javaプログラム中でLoggerを作成する前にlog4j2の設定ファイルのシステムプロパティ("log4j.configurationFile")を設定すれば良い。
つまり↓を書く。
System.setProperty("log4j.configurationFile", "file:///C:/log4j2.xml");
ファイルパスはURI指定なので注意。
ちなみに起動引数への追加方法はこれ。
java -Dlog4j.configurationFile=file:///C:/log4j2.xml -jar Main.jar
グーグル先生でそのものズバリの答えだけ探す癖がついちゃうとだめね。
・実行するJAVAプログラムは外部からJAR呼び出しを行う(-jarオプションを使用する)
・環境変数(クラスパス)への追加は避けたい(というか-jar呼び出しを行う時点で環境変数のクラスパスが無効になる)
・任意の場所に設定ファイルを配置したい
・Javaの起動引数への追加も出来ない(呼び出しは別のシステムの管轄なので)
要するにJavaプログラム内でlog4jの設定ファイル読込をしたいということ。
以上、状況説明。
以下、対応。
Javaプログラム中でLoggerを作成する前にlog4j2の設定ファイルのシステムプロパティ("log4j.configurationFile")を設定すれば良い。
つまり↓を書く。
System.setProperty("log4j.configurationFile", "file:///C:/log4j2.xml");
ファイルパスはURI指定なので注意。
ちなみに起動引数への追加方法はこれ。
java -Dlog4j.configurationFile=file:///C:/log4j2.xml -jar Main.jar
グーグル先生でそのものズバリの答えだけ探す癖がついちゃうとだめね。