Элемент уровня входа в систему и атрибут уровня
Вопрос прост. В некоторых logback.xmls я вижу уровень как элемент:
<logger name="mylog" additivity="false">
<level value="DEBUG" />
<appender-ref ref="fileAppender" />
</logger>
Но в некоторых это записано как атрибут:
<logger name="mylog" additivity="false" level="debug">
<appender-ref ref="fileAppender" />
</logger>
В чем разница?
Благодарю.
1 ответ
С точки зрения настройки Logback разницы нет. Оба следующих объявления функционально идентичны:
<logger name="com.x.y">
<level value="DEBUG"/>
</logger>
<logger name="com.x.y" level="DEBUG" />
Конфигуратор Logback (посмотрите на ch.qos.logback.core.joran.GenericConfigurator.doConfigure()
) создает идентичный Logger
экземпляр для обеих этих деклараций.
Единственное различие - при разборе конфигурации - в том, что первое проявляется в большем количестве случаев ch.qos.logback.core.joran.event.SaxEvent
(начальные и конечные события для регистратора и уровня), чем второй (начальные и конечные события только для регистратора).
Если вы связываете регистратор с конкретным приложением, тогда вы уже определите тело элемента регистратора, например
<logger name="com.x.y">
<appender-ref ref="STDOUT"/>
</logger>
В этом случае определение level
в теле элемента, а не как атрибут, может читаться лучше, но на самом деле это всего лишь пример предпочтений разработчика.