我遇到了一个logback配置问题。这是我的logback.xml:
<configuration>
<appender name="EMS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>../logs/ems.log</file>
<append>true</append>
<encoder>
<pattern>[%d{ISO8601}] {%t} [%p] %c - %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>../logs/ems.log.%i</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>99</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>50MB</maxFileSize>
</triggeringPolicy>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%d{ISO8601}] {%t} [%p] %c - %m%n</pattern>
</encoder>
</appender>
<logger name="a.b.c" level="DEBUG">
<appender-ref ref="EMS"/>
</logger>
<logger name="a.b.c.d.SomeServiceImpl" level="INFO">
<appender-ref ref="EMS"/>
</logger>
<logger name="a.b.c.e.SomeFilter" level="INFO">
<appender-ref ref="EMS"/>
</logger>
<root level="OFF">
<appender-ref ref="EMS"/>
</root>
</configuration>
问题是当我为根记录器设置以下行时:
<appender-ref ref="EMS"/>
在ems.log文件中每行都重复:
[2013-12-31 13:16:59,217] {[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'} [DEBUG] a.b.c.f.CallerImpl - qweqweqwe
[2013-12-31 13:16:59,217] {[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'} [DEBUG] a.b.c.f.CallerImpl - qweqweqwe
但是当我设置以下内容时:
<appender-ref ref="STDOUT"/>
一切都按预期工作:
[2013-12-31 13:16:59,217] {[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'} [DEBUG] a.b.c.f.CallerImpl - qweqweqwe
我预计,只要根记录器具有“关闭”级别,就不应该出现问题......
有人可以帮忙吗?
答案 0 :(得分:5)
我认为问题在于,尽管根级别具有“OFF”级别,但您可以将以“a.b.c”开头的记录器的有效日志记录级别更改为DEBUG,其中包含以下内容:
<logger name="a.b.c" level="DEBUG">
<appender-ref ref="EMS"/>
</logger>
您可以阅读有关此here的更多信息。
不会打印名称不以“a.b.c”开头的记录器。名称以“a.b.c”开头的所有记录器都将具有级别DEBUG,“a.b.c.d.SomeServiceImpl”和“a.b.c.e.SomeFilter”除外,它们将INFO作为其有效日志记录级别。
“OFF”日志记录级别将被忽略,并且不会用于过滤日志记录事件。相反,它将在“a.b.c”记录后第二次记录相同的日志消息。记录器。
要解决您的问题,我建议您删除此内容:
<root level="OFF">
<appender-ref ref="EMS"/>
</root>
来自您的日志记录配置,因为它不会更改记录器的有效日志记录级别,但会将所有日志事件附加到log.file中以获取“a.b.c”记录器。
答案 1 :(得分:3)
另请注意:“默认情况下,记录器的可加性标志设置为true。” - 来源:http://logback.qos.ch/manual/architecture.html#effectiveLevel