java - 登录JDK11 HttpClient
问题描述
JDK11 引入了一个新的 HTTP 客户端,具有许多传统java.net.HttpURLConnection
类所缺乏的特性。我遇到的第一个问题是如何正确启用新添加的 HTTP 客户端的日志记录?
解决方案
客户端使用java.util.logging,最简单的方法是使用SLF4J。有关详细信息,请参阅JUL 到 SLF4J 桥接器。
需要3个步骤:
将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'
添加 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
它将启用所有日志打印到控制台。
推荐阅读
- haml - 可以将 HAML 文件导入另一个 HAML 文件吗?
- python - 在 MQTT 中发送文件的问题
- python - 如何在 Python 中使用 json 使排行榜显示名称而不是“无”?
- python - 迭代列表删除值
- asp.net - 如何清除 Microsoft Azure 服务器上的 iis 缓存?
- javascript - react js如何制作动态表格
- sql-server - 如何提高 C# 中大型 for 循环的速度
- apache-spark - 三角洲湖蟒
- c# - 证书SHA1withRSA加密方式.NET Framework和.NET Core计算结果不一致
- google-cloud-platform - 将文件从 Dataflow VM 读取到管道