со ссылкой на: Logback's Configurationнесколько корневых Регистраторов с 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 appender и второй корневой регистратор все еще находятся в игре, даже если имя хоста было «torino».
Как этот пример? Почему допустимы два регистратора <root>
, если их нет в пределах <if>
или <else>
что мне не хватает ???
Речь идет о строгом синтаксисе XML, в котором указано, что не более элемента '' элемент разрешен как * прямой * дочерний элемент ''. Другой элемент '' является дочерним элементом '', поэтому это не нарушает синтаксис XML. –
Andreas
@andreas, который все еще не отвечает на вопрос, какой корневой регистратор активен. Превышает ли кто-то другой или сливается каким-то образом? – Jason
Вы действительно не задавали этот вопрос. Вы только спросили, почему разрешены два элемента '', хотя документация говорит« не более одного ». Я бы сказал, что оба действуют. Обратите внимание, что первый элемент '' не имеет атрибута 'level'. Он просто * добавляет * еще одно приложение к корню. –
Andreas