如何禁用openjdk 11 java.net.http.httpclient日志记录?

rryofs0p  于 2021-06-30  发布在  Java
关注(0)|答案(4)|浏览(509)

我使用的是openjdk11的httpclient,它附带了一个恼人的循环日志记录。
下面是它的样子(我使用的是基于spring引导的应用程序):

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 - []

我试图通过向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" />

谢谢你的帮助

iyfamqjs

iyfamqjs1#

尝试使用系统属性运行应用程序:

java -Djdk.internal.httpclient.debug=false
kmpatx3s

kmpatx3s2#

该记录器的名称是“jdk.internal.httpclient.debug”。它只接收调试级别的跟踪,因此除非您的应用程序(或框架?)默认启用调试跟踪,否则跟踪不会出现,这是一件非常奇怪的事情。
尝试以下操作:

<logger name="jdk.internal.httpclient.debug" level="WARN" />
fdx2calv

fdx2calv3#

我处理日志级别的解决方案是创建一个新的“java.util.logging.logger”,并将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);

...
c2e8gylq

c2e8gylq4#

添加 java.util.logging.LogManager.getLogManager().reset(); 以我的主要方法修好它!

相关问题