log4j2.xml属性替换-默认覆盖现有属性

时间:2020-09-28 06:40:25

标签: spring logging properties configuration log4j2

有人告诉我向使用log4j2.xml配置的Spring Boot应用程序添加一些附加的条件日志记录。 我提供了一个application.properties参数,然后在log4j2.xml中使用它来定义属性。 内部application.properties

xxx.log.level =调试

在log4j2.xml内部

<Properties>
   <property name="XXX_LEVEL">${bundle:application:xxx.log.level}</property>
 </Properties>

<Loggers>
   <Logger name="com.some.package" level="${XXX_LEVEL}"  additivity="false">
            <AppenderRef ref="COMMON"/>
        </Logger>
</Loggers>

工作正常,如果我在application.properties中为属性提供值 我不会在那个级别上进行打包。但是,如果有人忘记添加该属性.. log4j文档提供了没问题,并扩展了如何添加默认值。

所以默认。

<Properties>
   <property name="XXX_LEVEL">${bundle:application:xxx.log.level:-INFO}</property>
 </Properties>

非常好!如果我留下xxx.log.level =或仅保留一行int属性,则可以在INFO级别完成日志记录。我几乎发布了更改,但随后发现了一件非常麻烦的事情- 现在,我可以编写xxx.log.level = DEBUG或ERROR或其他任何内容,但它将始终以INFO级别记录。默认情况总是以某种方式覆盖该值,因为它将是空值-尽管如果删除默认部分,它可以清楚地找到实际值。 我该如何使其按预期方式工作-以在属性文件参数中指定的级别登录,或者如果未在该参数中指定默认值,则默认登录。

0 个答案:

没有答案