Xml構成ファイルを見つけようとするときにlog4jが調べる必要があることをどのように指定できますか
デフォルトでは、log4jはクラスフォルダーのルートを検索するようです。デバッグlog4j機能を使用し、IDEからアプリケーションを実行していると言えます。
ただし、jarにクラスフォルダーはもうありません。また、log4j.xmlファイルはjarのルートにあります。
オプション-Dlog4j.configuration = log4j.xmlを設定しようとしましたが、機能しません。
現在の私のアプリケーションのグローバル構造は次のとおりです。
CLASSPATHを使用してlog4j.xmlを見つけます。 log4jが設定ファイルを見つけられない場合、コンソールにエラーを送信します。このようなエラーが表示されない場合は、編集中の設定ファイルではない可能性のある設定ファイルが見つかっている可能性があります。 Log4Jが使用している構成ファイルのパスを強制的に報告するコマンドラインオプションがあります。
から http://wiki.Apache.org/logging-log4j/Log4jConfigurationHelp
「-Dlog4j.debug」を使用して実行すると、log4jは標準出力に情報を出力し、それ自体の設定を試行します。それを見ると、設定ファイルを探している場所がわかります。
Log4j構成がソースツリーの外部にあるとします。構成ファイルが見つからない場合は、以下を支援してください。
-Dlog4j.configuration=file:///your/path/log4j.xml
修飾子file:///に注意してください。それなしでは機能しません。
エラーはありません
そのため、log4jは構成を検出しています。それ以外の場合は次のようになります。
log4j:WARNロガー()のアペンダーが見つかりませんでした。
log4j:WARN log4jシステムを適切に初期化してください。
また:
ログはコンソールに出力されるだけです
つまり、おそらく FileAppender または RollingFileAppender のようなファイルアペンダーを定義する必要があることを意味します。 略称 の「構成」セクションには、いくつかの例があります。
次を使用できます。
DOMConfigurator.configure(log4jConfigurationFilename);
ルート以外の場所を指定します!
これは非常に古い質問かもしれませんが、私にとっては答えはここにありました https://logging.Apache.org/log4j/2.x/manual/configuration.html
上記のリンクのとおり、Apacheログは以下の特定の順序でlog4j2.xmlファイルのクラスパスを検索します