Logback 级别元素与级别属性
Logback level element vs. level attribute
问题很简单。在某些 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>
有什么区别?
谢谢。
在配置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
而不是作为属性可能读起来更好,但这实际上只是开发人员偏好的一种情况。
问题很简单。在某些 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>
有什么区别?
谢谢。
在配置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
而不是作为属性可能读起来更好,但这实际上只是开发人员偏好的一种情况。