2017-01-14 11 views
3

со ссылкой на: 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>

что мне не хватает ???

+0

Речь идет о строгом синтаксисе XML, в котором указано, что не более элемента '' элемент разрешен как * прямой * дочерний элемент ''. Другой элемент '' является дочерним элементом '', поэтому это не нарушает синтаксис XML. – Andreas

+0

@andreas, который все еще не отвечает на вопрос, какой корневой регистратор активен. Превышает ли кто-то другой или сливается каким-то образом? – Jason

+0

Вы действительно не задавали этот вопрос. Вы только спросили, почему разрешены два элемента '', хотя документация говорит« не более одного ». Я бы сказал, что оба действуют. Обратите внимание, что первый элемент '' не имеет атрибута 'level'. Он просто * добавляет * еще одно приложение к корню. – Andreas

ответ

4

Правовая оговорка: Я являюсь сторонником проекта logback.

Это определенно заслуживает пояснения в документации по регистрации. Можете ли вы подать отчет об ошибке в http://jira.qos.ch? Ссылка на эту запись StackOverflow должна быть достаточной.

Что касается корневого регистратора, то при условии, что условие является истинным, они будут активны. Оба приложения с именем FILE и CON будут прикреплены к корневому журналу. Уровень будет установлен на последнее значение. Обратите внимание, что корневой элемент в условном выражении не устанавливает уровень.

+0

будет делать Ceki. Просто чтобы убедиться, что это сказано, спасибо за замечательную библиотеку! Я был смущен тем, что на самом деле делал «». спасибо за разъяснение @ Andreas. – Jason