gih*_*han 3 java logging logback
我以编程方式设置了 Logback 文件附加器,并将日志级别设置为ALL
. 原因是设置日志级别,ALL
我想记录文件包含所有日志详细信息,例如(INFO,DEBUG,WARN and etc...)
但我想避免来自控制台的这些详细信息。如果有人知道,请让我知道如何以编程方式禁用 Logback 输出到控制台。
记录器代码片段
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;
}
Run Code Online (Sandbox Code Playgroud)
注意:当我设置日志级别WARN
或DEBUG
详细信息时,日志文件以及控制台输出中不会显示。但我想将所有详细信息记录到日志文件中,包括INFO
.
来自文档:
假设配置文件 logback-test.xml 或 logback.xml 不存在,logback 将默认调用 BasicConfigurator 来设置最小配置。此最小配置由附加到根记录器的 ConsoleAppender 组成。
如果您想禁用所有控制台输出,您应该尝试删除默认的 ConsoleAppender。根据BasicConfigurator 来源,该附加程序的名称是“console”。所以你可以尝试(未经测试):
logger.detachAppender("console");
Run Code Online (Sandbox Code Playgroud)
我强烈建议将这些编程配置移至 logback.xml 文件中,并且仅在必要时以编程方式更改配置。我认为配置文件更明确且更易于管理。
归档时间: |
|
查看次数: |
4644 次 |
最近记录: |