2

JDK11 引入了一个新的 HTTP 客户端,具有许多传统java.net.HttpURLConnection类所缺乏的特性。我遇到的第一个问题是如何正确启用新添加的 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 appender(或相应地更改它)

    <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 回答