2

JDK11 は、従来java.net.HttpURLConnectionのクラスに欠けている多くの機能を備えた新しい HTTP クライアントを導入しました。私が遭遇した最初の質問は、新しく追加された HTTP クライアントでログを適切に有効にする方法です。

4

1 に答える 1

4

クライアントは java.util.logging を使用します。最も簡単な方法は SLF4J を使用することです。詳細については、JUL から SLF4J へのブリッジを参照してください。

3 つのステップが必要です。

  1. ランタイム スコープでjul-to-slf4j ブリッジをクラスパスに追加します。
    メイヴン:

    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jul-to-slf4j</artifactId>
       <version>1.7.25</version>
       <scope>runtime</scope>
    </dependency>
    

    グラドル

    runtime group: 'org.slf4j', name: 'jul-to-slf4j', version: '1.7.25'

  2. logback.xml (logback-test.xml) に追加します。STDOUT アペンダーを追加することを忘れないでください (またはそれに応じて変更します)。

    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
        <resetJUL>true</resetJUL>
    </contextListener>
    
    <logger name="jdk.internal.httpclient.debug" level="debug" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>
    
    <root level="DEBUG">
        <appender-ref ref="STDOUT"/>
    </root>
    
  3. コードに追加します。

     static {
     SLF4JBridgeHandler.removeHandlersForRootLogger();
     SLF4JBridgeHandler.install();
     }
    

または、教育目的でシステム プロパティを追加することもできます。
-Djdk.httpclient.HttpClient.log=all これにより、コンソールへのすべてのログ出力が有効になります。

于 2019-02-17T07:57:06.657 に答える