如何解决log4j2.xml属性替换-默认覆盖现有属性
有人告诉我向使用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级别记录。默认情况总是以某种方式覆盖该值,因为它将是空值-尽管如果删除默认部分,它可以清楚地找到实际值。 我该如何使其按预期方式工作-以在属性文件参数中指定的级别登录,或者如果未在该参数中指定默认值,则默认登录。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。