【发布时间】:2011-08-04 21:57:04
【问题描述】:
如何配置Logback 以将记录器的不同级别记录到不同的目的地?
例如,给定以下 Logback 配置,Logback 是否会将 INFO 消息记录到 STDOUT 和 ERROR 消息到 STDERR?
(请注意,此示例是Chapter 3: Logback Configuration 中示例logback-examples/src/main/java/chapters/configuration/sample4.xml 的变体)。
<configuration>
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="STDERR"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
<target>System.err</target>
</appender>
<!-- What is the effective level of "chapters.configuration"? -->
<logger name="chapters.configuration" level="INFO" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
<logger name="chapters.configuration" level="ERROR" additivity="false">
<appender-ref ref="STDERR" />
</logger>
<!-- turn OFF all logging (children can override) -->
<root level="OFF">
<appender-ref ref="STDOUT" />
</root>
</configuration>
【问题讨论】:
-
在一个流行测验中我会说 - 更高的一个:),但说真的,如果你同时登录两个级别,你的控制台/标准输出会说什么?
-
再想一想,我认为我更感兴趣的问题是,“如何将记录器的不同级别记录到不同的目的地”?
-
你可能会喜欢我创建的filter。
-
@kostja 这是正确的答案。
levels are ordered as follows: TRACE < DEBUG < INFO < WARN < ERROR.