指:Logback的配置
我的配置可以包含 ...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 追加器和第二个根记录器仍在运行,即使主机名是"都灵"。
这如何是一个有效的例子? 为什么在这种情况下允许两个<root>
记录器,而一个不在<if>
或<else>
内
我错过了什么???
免责声明:我是 logback 项目的维护者。
这绝对值得在日志文档中进行澄清。你能在 http://jira.qos.ch 提交错误报告吗?引用这个 StackOverflow 条目应该就足够了。
至于哪个根记录器处于活动状态,假设条件为真,它们都将处于活动状态。名为 FILE 和 CON 的追加器都将附加到根记录器。级别将设置为最后一个设置的值。请注意,条件中的根元素不设置级别。