我的配置可以包含
...at most one <root> element...
但后来在同一个文档中,在讨论条件时,我看到了:
<configuration debug="true">
<if condition='property("HOSTNAME").contains("torino")'>
<then>
<appender name="CON" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<root> <------ root logger #1
<appender-ref ref="CON" />
</root>
</then>
</if>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${randomOutputDir}/conditional.log</file>
<encoder>
<pattern>%d %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<root level="ERROR"> <------ root logger #2
<appender-ref ref="FILE" />
</root>
</configuration>
请注意,有两个<root>
元素!我很困惑,因为我没有看到任何<else>
元素,我会假设FILE appender和第二个根记录器仍然在播放,即使主机名是&#34; torino&# 34。
这是一个有效的例子?为什么在这种情况下,如果一个<root>
或<if>
<else>
记录器
我错过了什么?
答案 0 :(得分:4)
免责声明:我是logback项目的维护者。
这绝对值得在logback文档中进行说明。你能否在http://jira.qos.ch提交错误报告?引用此StackOverflow条目就足够了。
对于哪个根记录器处于活动状态,假设条件为真,它们将同时处于活动状态。名为FILE和CON的两个appender都将附加到根记录器。级别将设置为最后一个值集。请注意,条件中的根元素不设置级别。