您的浏览器过于古老 & 陈旧。为了更好的访问体验, 请 升级你的浏览器
Ready 发布于2022年12月06日 13:36 最近更新于 2022年12月06日 13:54

如何输出JDK 11自带的 java.net.http.HttpClient 的日志信息?

2399 次浏览 读完需要≈ 1 分钟 Java
如题,如何将JDK 自带的 HttpClient 的日志信息打印到控制台?以便定位一些业务问题。

1 个回答

Ready [提问者] · 2年前
// 在初始化 HttpClient 前先运行如下命令
System.setProperty("jdk.httpclient.HttpClient.log", "all");

在初始化前先执行上述代码,即可输出 JDK 自带 HttpClient 的所有log信息。

"all"相当于"content,headers,requests,frames,errors,trace,ssl,channel"的日志集合。

"frames"可分别更进一步细化指定为"frames[:control:data]",中括号内支持"control"、 "data"、 "window"、"all" 等 frame type。

具体源代码请参见:https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/java.net.http/share/classes/jdk/internal/net/http/common/Log.java

如果你作为开发者,还想调试并尝试定位修复 HttpClient 实现的bug,你可以通过运行如下代码输出更多调试细节信息。

System.setProperty("jdk.internal.httpclient.debug", "true");

当然,在启动JDK的时候,也可以通过命令行指定上述选项参数,例如:-Djdk.httpclient.HttpClient.log=errors,requests,headers,frames-Djdk.internal.httpclient.debug=true

已采纳 ? 1 0 0 编辑

撰写答案