web-dev-qa-db-ja.com

テスト中にSpringのロギングレベルを設定するにはどうすればよいですか?

私のSpring Bootテストスタックは、Maven + Surefire + JUnit4です。テストには@RunWith(SpringJUnit4ClassRunner.class)で注釈を付けています。

私が持っています application.properties私のプロジェクトルートで次の行を使用します。

logging.level.root=INFO

これは、Springブートアプリの実行時のロギングを制御し、通常の実行で機能します。

ただし、JUnit4テストを実行すると、次のようなDEBUG出力のページが大量に送信されます。

....
17:43:20.500 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'autoConfigurationReport'
17:43:20.500 [main] DEBUG org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader - Registered bean definition for imported class 'org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration'
17:43:20.501 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'org.springframework.boot.autoconfigure.condition.BeanTypeRegistry'
17:43:20.502 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'autoConfigurationReport'
....

このすべてのスパムは、実際に関連する部分を見るのをほとんど不可能にします。ロギングレベルをテスト出力に適用するにはどうすればよいですか?

ロギングを明示的に設定していません。ドキュメントによれば、デフォルトでLogbackが使用されます。

8

一般的な観点から、別のlogback-test.xml- test-resourceレベルのファイル。このファイルでは、希望する出力を対象とするログレベルに関する設定を追加できます。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
    </layout>
  </appender>

  <logger name="com.your.package" level="DEBUG">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <logger name="org.springframework" level="WARN">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <logger name="org.hibernate" level="WARN">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <logger name="org.Eclipse" level="WARN">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <logger name="jndi" level="WARN">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <logger name="org.Apache.http.wire" level="WARN">
      <appender-ref ref="CONSOLE"/>
  </logger>

  <root level="DEBUG">
      <appender-ref ref="CONSOLE"/>
  </root>

</configuration>

これが、ログ出力を減らすための道のりのいくらかに役立つことを願っています。詳細は、logbackの独自のページに記載されています。

https://logback.qos.ch/manual/configuration.html

それは上のセクションで述べました:

まず、logbackがそれ自体を構成するために行う初期化手順について説明します。1.Logbackは、クラスパスでlogback-test.xmlというファイルを見つけようとします。

2.そのようなファイルが見つからない場合、logbackはクラスパスでlogback.groovyというファイルを見つけようとします。

3.そのようなファイルが見つからない場合は、クラスパスにあるlogback.xmlファイルをチェックします。

4.そのようなファイルが見つからない場合、サービスプロバイダーロード機能(JDK 1.6で導入)を使用して、META-INF\services \ファイルを検索することにより、com.qos.logback.classic.spi.Configuratorインターフェースの実装を解決します。クラスパスのch.qos.logback.classic.spi.Configurator。その内容は、必要なConfigurator実装の完全修飾クラス名を指定する必要があります。

5.上記のいずれも成功しなかった場合、logbackはBasicConfiguratorを使用して自動的に構成し、ログ出力をコンソールに送信します。

14
vegaasen