6

この質問は何度もされているようです。しかし、私が試したすべての解決策 (ほとんどの場合、log4j.properties ファイルが正しい場所にあり、正しく入力されていることを確認してください) は、私の場合は機能しません。

私はmavenプロジェクトを持っています。テストに log4j を使用したいと考えています。テスト クラスは、ロガーが使用される src/main/java で定義されたヘルパー メソッドを使用します。

私のヘルパークラス(src/main/java/内)にインポートしました

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

ロガーをインスタンス化しました

private static final String TAG    = Helper.class.getSimpleName();
private static final Logger logger = LoggerFactory.getLogger(TAG);

src/main/resources と src/test/resources の両方に、次の log4j.properties ファイルを含めました

### set log levels - for more verbose logging change 'info' to 'debug' ###
### Also add logfile to the root, if need stdout then add stdout appender here###
log4j.rootLogger=debug, stdout

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{dd-mm HH:mm:ss,SSS} %p/%c{1}:%L - %m%n

私のPOMには、slf4jへの依存関係が含まれています

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
</dependency>

私のヘルパークラスのコードでは、このようにロガーを使用しています

logger.debug("logger test...");

コンソールにメッセージが表示されず、次の警告メッセージが表示されます

log4j:WARN No appenders could be found for logger (Helper).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

私は何が欠けていますか?

アップデート

この問題は、log4j.configuration プロパティを log4j-test.xml に設定するプロジェクト オプションに関連していました。次のプラグインをプロジェクト maven pom に追加したところ、問題が修正されました。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.14.1</version>
    <configuration>
      <systemPropertyVariables>
        <log4j.configuration>log4j.properties</log4j.configuration>
      </systemPropertyVariables>
    </configuration>
  </plugin>
4

2 に答える 2

7

あなたが投稿した部分から、それは大丈夫に見えます。それでは、問題を調査しましょう。私は単純なプロジェクトを行いました(ヘルパーのクラスは2つだけです:ロガーステートメントを呼び出すメソッドがあり、AppTest:ヘルパーでメソッドを呼び出すJUnitテストがあります)

  1. 生成されたコードをクリーンアップ
    mvn clean
    以下のファイルが存在
    ./src/main/java/sub/optimal/mavenexample/Helper.java
    ./src/main/resources/log4j.properties
    ./src/test/java/sub/optimal/mavenexample /AppTest.java
    ./src/test/resources/log4j.properties

  2. コードを コンパイル
    mvn compile 以下
    のファイルが 存在AppTest.java ./src/test/resources/log4j.properties ./target/classes/log4j.properties ./target/classes/sub/optimal/mavenexample/Helper.class プロパティ ファイルがターゲット ディレクトリにコピーされていない場合は、理由を見つける必要がある









  3. いくつかの出発点として、

    mvn -debug compile
    mvn -Dlog4j.debug testの出力を確認してください
于 2013-05-24T10:20:45.467 に答える