Элемент уровня входа в систему и атрибут уровня

Вопрос прост. В некоторых 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 в теле элемента, а не как атрибут, может читаться лучше, но на самом деле это всего лишь пример предпочтений разработчика.

Другие вопросы по тегам