web-dev-qa-db-ja.com

maven surefireのログレベル

Javaロギングのロギングレベルを調整できません。mavensurefire(mvn test)を使用しており、デフォルトのINFOからFINESTなどに調整しようとしています。

src/test/resources/logging.propertiesの下にlogging.propertiesファイルがあります

コンパイル後、target/test-classesの下に、目的の構成を含むlogging.propertiesファイルが表示されます。

Java.util.logging.ConsoleHandler.level = FINEST

javax.enterprise.system.container.ejb.level = FINE

...

ただし、glassfishからのコンソール出力にはINFO/SEVEREレベルのメッセージしかありません。

どこで私は間違えましたか?それとも、これはmavenの尻のことの別の痛みですか?

24
Dzhu

ハンドラーをログファイルで指定する必要があります

handlers = Java.util.logging.ConsoleHandler, Java.util.logging.FileHandler

その後、それはうまくいくはずです

8
martin

私はJava.util.logging.config.fileをMAVEN_OPTS環境変数に設定しようとしましたが、これは機能しませんが、最終的にはそのシステムプロパティをpom.xmlに入れて(そしてもちろん、適切なlogging.propertiesをsrc /に作成して)機能させましたテスト/リソース):

    <plugins>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
           <systemProperties>
             <property> 
               <name>Java.util.logging.config.file</name>
               <value>src/test/resources/logging.properties</value>
             </property>
           </systemProperties>
        </configuration>
      </plugin>
    </plugins>
17
ehrencrona

試す

${build.testOutputDirectory}/logging.properties

また、コマンドラインでsurfire-argsを使用してこれを指定します。

<argLine>${surefire.argLine} ${argLine} -Djava.util.logging.config.file=${build.testOutputDirectory}/logging.properties</argLine>
3
bvarner

私はこの正確な問題を見ていましたが、テストで特定のロギングが必要になるたびにプロジェクト構成(pom.xml)ファイルを変更したくありませんでした。

-Dプロパティはmavenコマンドラインから機能します。

したがって、コマンドラインからロギング構成ファイルを選択できます。

mvn -Djava.util.logging.config.file=`enter filename here` test

一般的なレベルの分母を使用している場合.level=FINESTサードパーティのロギングもそのレベルで表示されることに注意してください。

Mavenまたはサードパーティのロギングを特定のレベルに無効化または設定するには、選択したログ構成ファイルで、これらのクラスに対して明示的なログレベル選択を使用します。

Com.google.inject .....からのログ行がたくさんあります.

aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog
FINE: Instance member validation: 3ms
aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog
FINE: Provider verification: 1ms
aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog
FINE: Static member injection: 1ms

だから私は追加します:

com.google.inject.level=INFO

ファイルに。レベル設定はすべてのサブクラスに再帰的であることに注意してください。したがって、com.level=NONEは、comドメインのすべてのロガーのすべてのロギングを無効にします。

これとテスト選択機能を組み合わせる-Dtest=...記載されているsurefireプラグイン here は、バグやエラーを分離するのに非常に適しています。

1
JBWanscher