JDK11引入了一个新的HTTP客户端,其中传统java.net.HttpURLConnection
类中缺少许多功能。我遇到的第一个问题是如何正确启用新添加的http客户端的记录?
客户端使用java.util.logging,最简单的方法是使用slf4j。有关更多信息,请参见7月至SLF4J桥。
需要3个步骤:
-
使用运行时范围添加Jul-to-Slf4j桥向您的类路径。
Maven:<dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>1.7.25</version> <scope>runtime</scope> </dependency>
gradle :
`runtime group: 'org.slf4j', name: 'jul-to-slf4j', version: '1.7.25'`
添加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>
添加您的代码:
static { SLF4JBridgeHandler.removeHandlersForRootLogger(); SLF4JBridgeHandler.install(); }
另外,出于教育目的,可以添加系统属性:
-Djdk.httpclient.HttpClient.log=all
这将使所有记录打印到控制台。