查看一个简单的Java应用程序,并通过Logback记录一条消息。
App.java
package com.mkyong.test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class App {
private static final Logger log = LoggerFactory.getLogger(App.class);
public static void main(String[] args) {
log.debug("Testing");
}
}
PS已通过Logback 1.1.2测试
1.问题
一个简单的logback.xml
用于将消息记录到控制台。
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<logger name="com.mkyong.test" level="debug">
<appender-ref ref="STDOUT" />
</logger>
<root level="error">
<appender-ref ref="STDOUT" />
</root>
</configuration>
运行以上程序,Logback将记录两次消息?
2015-01-25 13:55:21 [main] DEBUG com.mkyong.test.App - Testing
2015-01-25 13:55:21 [main] DEBUG com.mkyong.test.App - Testing
2.解决方案
这是由Appenders积累引起的。 要解决此问题,请在应用程序记录器中添加additivity="false"
logback.xml
<logger name="com.mkyong.test" level="debug" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
<root level="error">
<appender-ref ref="STDOUT" />
</root>
输出量
2015-01-25 13:58:24 [main] DEBUG com.mkyong.test.App - Testing
参考文献
标签: 登录
翻译自: https://mkyong.com/logging/logback-duplicate-log-messages/