logback springProperty 标签不起作用
logback springProperty 不起作用
·
问题
在application.yml配置值后, 在logback-spring.xml 中添加下面的标签
<springProperty scope="context" name="appName" source="spring.application.name"/>
<springProperty scope="context" name="hosts" source="demo.host"/>
加载xml文件的时候 发现appName 有值, hosts没值。
排查
全局搜索 springProperty , 发现 org.springframework.boot.logging.logback.SpringPropertyAction 类是负责解析相关值的。
这个类通过 Spring的 Environment 获取yml配置中的值。
看到实际上是加载了 bootstrap.yml 。
本质上是logback比application.yml 更早的去加载
解决
方法一
将配置写到 bootstrap.yml
方法二
将logback-spring.xml改名,如改成logback-delayed.xml,在application.yml指定加载的配置文件,以确保application.yml已经被Spring加载到程序的上下文中
logging:
config: classpath:logback-delayed.xml
方法三
logback 配置为默认的 logback.xml, 通过property 标签去读取配置文件,不过这个标签对yml格式的支持好像不是太好,logback读到的配置key值的格式风格要与properties相同
<property resource="application.yml" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${LOG_FORMAT}</pattern>
<charset>${CHARSET}</charset>
</encoder>
</appender>
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)