有人告诉我向使用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级别记录。默认情况总是以某种方式覆盖该值,因为它将是空值-尽管如果删除默认部分,它可以清楚地找到实际值。 我该如何使其按预期方式工作-以在属性文件参数中指定的级别登录,或者如果未在该参数中指定默认值,则默认登录。