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