[英]How to disable openJdk 11 java.net.http.HttpClient logging?
I'm using httpclient from openJDK 11 that comes with an annoying recurrent logging.我正在使用来自 openJDK 11 的 httpclient,它带有烦人的重复日志记录。
Here how it looks like (I'm using spring boot based app):这是它的样子(我使用的是基于 Spring Boot 的应用程序):
2020-01-24 18:35:46,806 DEBUG [HttpClient-1-SelectorManager] : [HttpClient-1-SelectorManager] [3840s 992ms] HttpClientImpl(1) Next deadline is 3000 - []
2020-01-24 18:35:49,806 DEBUG [HttpClient-1-SelectorManager] : [HttpClient-1-SelectorManager] [3843s 992ms] HttpClientImpl(1) next timeout: 0 - []
I've tried to disable it by adding the following entries to logback-spring.xml to no avail:我试图通过将以下条目添加到 logback-spring.xml 来禁用它,但无济于事:
<logger name="httpclient" level="WARN" />
<logger name="jdk.internal.net.http" level="WARN" />
<logger name="HttpClientImpl" level="WARN" />
<logger name="java.net.http.HttpClient" level="WARN" />
<logger name="HttpClient" level="WARN" />
<logger name="HttpClient-1-SelectorManager" level="WARN" />
Thanks for your help谢谢你的帮助
adding java.util.logging.LogManager.getLogManager().reset();
添加
java.util.logging.LogManager.getLogManager().reset();
to my main method fixed it!以我的主要方法修复它!
The name of that logger is "jdk.internal.httpclient.debug".该记录器的名称是“jdk.internal.httpclient.debug”。 It only receives traces of level DEBUG, and therefore traces should not appear unless your application (or framework?) enables debug traces by default which is a very strange thing to do.
它只接收 DEBUG 级别的跟踪,因此除非您的应用程序(或框架?)默认启用调试跟踪,否则不应出现跟踪,这是一件非常奇怪的事情。
Try something like:尝试类似:
<logger name="jdk.internal.httpclient.debug" level="WARN" />
尝试使用系统属性运行您的应用程序:
java -Djdk.internal.httpclient.debug=false
My solution to handle the log level is creating a new "java.util.logging.Logger" and set the logger to info: "logger.setLevel(Level.INFO)".我处理日志级别的解决方案是创建一个新的“java.util.logging.Logger”并将记录器设置为 info:“logger.setLevel(Level.INFO)”。
import java.util.logging.Logger;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Level;
private Logger logger;
private FileHandler fileHandler;
private ConsoleHandler consoleHandler;
private LogFileFormater logFileFormater;
private final int FILE_SIZE = 10240000; //10MB
public class LogFileHandler {
logger = Logger.getLogger("");
logFileFormater = new LogFileFormater();
File logfile = new File("example.log");
fileHandler = new FileHandler(logfile.getAbsolutePath(), FILE_SIZE, 1, true); //log to file
consoleHandler = new ConsoleHandler(); //log to console
fileHandler.setFormatter(logFileFormater);
consoleHandler.setFormatter(logFileFormater);
logger.addHandler(fileHandler);
logger.addHandler(consoleHandler);
logger.setUseParentHandlers(false);
logger.setLevel(Level.INFO);
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.