我以编程方式设置了Logback file appender,并将日志级别设置为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;
}
注意:当我设置日志级别WARN
或DEBUG
时,详细信息并未显示在日志文件中以及控制台输出。但我想记录每个详细信息记录包含INFO
的文件。
答案 0 :(得分:1)
这对我有用
logger.setAdditivity(false);
答案 1 :(得分:1)
来自文档:
假设配置文件是logback-test.xml或logback.xml 不存在,logback将默认调用BasicConfigurator 将设置最小配置。这个最小的配置 由连接到根记录器的ConsoleAppender组成。
如果要禁用所有控制台输出,则应尝试删除默认的ConsoleAppender。根据{{3}},这个appender的名字是“console”。所以你可以尝试(未经测试):
logger.detachAppender("console");
我强烈建议将这些编程配置移动到logback.xml文件中,并且只在必要时以编程方式更改配置。在我看来,配置文件更明确,更容易管理。
答案 2 :(得分:0)
您可以通过删除ConsoleAppenderfrom
您的logback配置来完成此操作。
回溯配置如下。
<configuration>
<appender name="logFileAppender" class="ch.qos.logback.core.FileAppender">
<file>c:/logs/serverlog.log</file>
<append>true</append>
<encoder>
<pattern>%d [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="logFileAppender" />
</root>
</configuration>