jar ファイルと同じディレクトリから log4j2.xml ファイルをロードする
質問
application.jar と log4j2.xml ファイルを含むディレクトリ /release/ があります。アプリケーションを実行すると、 java -jar application.jar
log4j2.xml 構成ファイルは選択されません。次のように XML ファイルの場所を明示的に指定すると機能します
java -Dlog4j.configurationFile=log4j2.xml -jar application.jar
jar が存在するのと同じディレクトリから構成ファイルを常に取得するようにプログラムに指示する方法はありますか?プログラムをできるだけシンプルにして、アプリケーションの実行時にユーザーが面倒なシステム プロパティを設定する必要をなくしたいと考えています。
解決
システム プロパティがないと、log4j-2.0 はクラスパスで log4j2.xml ファイルを検索します。したがって、私はあなたの質問を次のように読んでいます:アプリを起動するにはどうすればよいですか java -jar application.jar
クラスパスに log4j2.xml ファイルがありますか?
これは、application.jar ファイルに Class-Path
マニフェスト内のエントリ (http://docs.oracle.com/javase/8/docs/technotes/tools/windows/findingclasses.html#sthref8 ).
もちろん、単に log4j2.xml ファイルを application.jar ファイルに含めることもできます。これを回避したい場合は、log4j2.xml ファイルを含むディレクトリを Class-Path
JAR ファイルのマニフェスト内のエントリ。(これは「.」現在のディレクトリである可能性があります。)