2017-09-19 10 views
1

La question est simple. Dans certains logback.xmls je vois le niveau comme un élément:Elément de niveau Logback par rapport à l'attribut de niveau

<logger name="mylog" additivity="false"> 
    <level value="DEBUG" /> 
    <appender-ref ref="fileAppender" /> 
</logger> 

Mais dans certains, il est écrit comme un attribut:

<logger name="mylog" additivity="false" level="debug"> 
    <appender-ref ref="fileAppender" /> 
</logger> 

Quelle est la différence?

Merci.

Répondre

1

En termes de configuration de Logback, il n'y a pas de différence. Les deux déclarations suivantes sont fonctionnellement identiques:

<logger name="com.x.y"> 
    <level value="DEBUG"/> 
</logger> 

<logger name="com.x.y" level="DEBUG" /> 

Logback de configurateur (jetez un oeil à ch.qos.logback.core.joran.GenericConfigurator.doConfigure()) crée une instance Logger identique pour ces deux déclarations. La seule différence - lors de l'analyse de la configuration - est que le premier se manifeste dans plusieurs instances de ch.qos.logback.core.joran.event.SaxEvent (événements de début et de fin pour l'enregistreur et pour le niveau) que le second (événements de début et de fin pour l'enregistreur uniquement).

Si vous associez un enregistreur à un appendeur spécifique, vous définissez déjà un corps d'élément de consignateur, par ex.

<logger name="com.x.y"> 
    <appender-ref ref="STDOUT"/> 
</logger> 

Dans ce cas, la définition d'un level dans le corps de l'élément plutôt que comme un attribut lirait mieux, mais il est vraiment juste une affaire de préférence des développeurs.

+0

Bon à savoir puisque la documentation ne présente que la deuxième voie. – Xenon