1

问题很简单。在一些 logback.xmls 中,我将 level 视为一个元素:

<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>

有什么区别?

谢谢。

4

1 回答 1

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>

在这种情况下,在元素主体中定义 alevel而不是作为属性可能会更好读,但这实际上只是开发人员偏好的一种情况。

于 2017-09-19T14:01:05.587 回答