web-dev-qa-db-ja.com

log4j.xmlを配置する場所

Xml構成ファイルを見つけようとするときにlog4jが調べる必要があることをどのように指定できますか

デフォルトでは、log4jはクラスフォルダーのルートを検索するようです。デバッグlog4j機能を使用し、IDEからアプリケーションを実行していると言えます。

ただし、jarにクラスフォルダーはもうありません。また、log4j.xmlファイルはjarのルートにあります。

オプション-Dlog4j.configuration = log4j.xmlを設定しようとしましたが、機能しません。

現在の私のアプリケーションのグローバル構造は次のとおりです。

  • com
  • lib
  • meta-inf
  • log4j.xml
36
Farid

CLASSPATHを使用してlog4j.xmlを見つけます。 log4jが設定ファイルを見つけられない場合、コンソールにエラーを送信します。このようなエラーが表示されない場合は、編集中の設定ファイルではない可能性のある設定ファイルが見つかっている可能性があります。 Log4Jが使用している構成ファイルのパスを強制的に報告するコマンドラインオプションがあります。

から http://wiki.Apache.org/logging-log4j/Log4jConfigurationHelp

「-Dlog4j.debug」を使用して実行すると、log4jは標準出力に情報を出力し、それ自体の設定を試行します。それを見ると、設定ファイルを探している場所がわかります。

34
Kelly S. French

Log4j構成がソースツリーの外部にあるとします。構成ファイルが見つからない場合は、以下を支援してください。

-Dlog4j.configuration=file:///your/path/log4j.xml

修飾子file:///に注意してください。それなしでは機能しません。

20
rwst

エラーはありません

そのため、log4jは構成を検出しています。それ以外の場合は次のようになります。

log4j:WARNロガー()のアペンダーが見つかりませんでした。
log4j:WARN log4jシステムを適切に初期化してください。

また:

ログはコンソールに出力されるだけです

つまり、おそらく FileAppender または RollingFileAppender のようなファイルアペンダーを定義する必要があることを意味します。 略称 の「構成」セクションには、いくつかの例があります。

5
Mornedhel

次を使用できます。

DOMConfigurator.configure(log4jConfigurationFilename);

ルート以外の場所を指定します!

3
AMKhan

これは非常に古い質問かもしれませんが、私にとっては答えはここにありました https://logging.Apache.org/log4j/2.x/manual/configuration.html

上記のリンクのとおり、Apacheログは以下の特定の順序でlog4j2.xmlファイルのクラスパスを検索します

  1. Log4jは、「log4j.configurationFile」システムプロパティを検査し、設定されている場合、ファイル拡張子に一致するConfigurationFactoryを使用して構成のロードを試みます。
  2. システムプロパティが設定されていない場合、プロパティConfigurationFactoryはクラスパスでlog4j2-test.propertiesを探します。
  3. そのようなファイルが見つからない場合、YAML ConfigurationFactoryはクラスパスでlog4j2-test.yamlまたはlog4j2-test.ymlを探します。
  4. そのようなファイルが見つからない場合、JSON ConfigurationFactoryはクラスパスでlog4j2-test.jsonまたはlog4j2-test.jsnを探します。そのようなファイルが見つからない場合、XML ConfigurationFactoryはクラスパスでlog4j2-test.xmlを探します。
  5. テストファイルが見つからない場合、ConfigurationFactoryプロパティはクラスパスでlog4j2.propertiesを探します。
  6. プロパティファイルが見つからない場合、YAML ConfigurationFactoryはクラスパスでlog4j2.yamlまたはlog4j2.ymlを探します。
  7. YAMLファイルが見つからない場合、JSON ConfigurationFactoryはクラスパスでlog4j2.jsonまたはlog4j2.jsnを探します。
  8. JSONファイルが見つからない場合、XML ConfigurationFactoryはクラスパスでlog4j2.xmlを見つけようとします。
  9. 構成ファイルが見つからない場合は、DefaultConfigurationが使用されます。これにより、ロギング出力がコンソールに送られます。