gpt4 book ai didi

java - 如何以编程方式禁用 Logback 输出到控制台但附加到文件

转载 作者:行者123 更新时间:2023-11-30 02:44:57 27 4
gpt4 key购买 nike

我以编程方式设置了 Logback 文件附加程序,并将日志级别设置为 ALL。原因是设置日志级别ALL我想记录文件包含所有日志详细信息,例如(INFO,DEBUG,WARN等...)但我想避免这些来自控制台的详细信息。如果有人知道,请告诉我如何以编程方式禁用 Logback 输出到控制台。

记录器代码片段

Reference

private static Logger createLoggerFor(String string, String file) {
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
PatternLayoutEncoder ple = new PatternLayoutEncoder();

ple.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
ple.setContext(lc);
ple.start();
FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>();
fileAppender.setFile(file);
fileAppender.setEncoder(ple);
fileAppender.setContext(lc);
fileAppender.start();

Logger logger = (Logger) LoggerFactory.getLogger(string);
logger.addAppender(fileAppender);
logger.setLevel(Level.ALL);
logger.setAdditive(false); /* set to true if root should log too */

return logger;
}

注意:当我设置日志级别 WARNDEBUG 详细信息不会显示在日志文件以及控制台输出中。但是我想要将所有详细信息记录到日志文件中,包括 INFO

最佳答案

来自文档:

Assuming the configuration files logback-test.xml or logback.xml are not present, logback will default to invoking BasicConfigurator which will set up a minimal configuration. This minimal configuration consists of a ConsoleAppender attached to the root logger.

如果您想禁用所有控制台输出,您应该尝试删除默认的 ConsoleAppender。根据BasicConfigurator source ,这个附加程序的名称是“console”。所以你可以尝试(未经测试):

logger.detachAppender("console");

我强烈建议将这些编程配置移至 logback.xml 文件中,并且仅在必要时以编程方式更改配置。我认为配置文件更明确且更易于管理。

关于java - 如何以编程方式禁用 Logback 输出到控制台但附加到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40460684/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com