spring3.x 如何让 logback.xml 读取 yml 配置的日志输出位置
spring版本3.x
这个问题一就好比先有鸡或先有蛋的问题 你明明知道先有哪个 但是这个问题你不知道怎么配
一开始确实让人头痛,每次在本地和线上部署的时候还要单独配置一下logback.xml的绝对路径 就很烦人 一旦忘了 那么部署到线上的时候就会将日志的文件夹配到同目录下
原因分析
经官网查询得知 logback.xml的加载顺序早于springboot的application.yml
springBoot的加载顺序为logback.xml -> yml/properties -> logback-spring.xml
? 我直接一个大问号为什么logback.xml和logback-spring.xml顺序不一样
那么
我们先来了解一下logback.xml和logback-spring.xml的区别
logback.xml
:这是Logback的标准配置文件,Spring Boot在启动时会加载这个文件。但是,它不支持Spring的Profile特性和高级特性,例如在日志中使用${springProperty}
来引用Spring环境中的属性。logback-spring.xml
:这是Spring Boot特有的配置文件,它支持Spring的Profile特性和高级特性。例如,我们可以在这个文件中定义不同的日志配置,然后根据当前的Profile来选择使用哪个配置。此外,我们还可以在日志中使用${springProperty}
来引用Spring环境中的属性。
简单理解
如果你的项目没有或者不需要配置spring的日志输出规则,那么logback.xml更适合你,简单好用
如果你的项目像我一样需要根据本地环境和线上环境动态配置日志输出的位置规则等 那么logback-spring.xml更适合你
那么如何解决该问题 配置logback-spring.xml呢 让我们进入正题
很简单
不多废话 上图
logback.xml配置如下
yml配置如下
代码附上
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logdir"/>
<property name="LOG_HOME" value="${logPath}"/>
logging:
config: classpath:logback-spring.xml
file:
path: logs
springProperty的source属性必须和yml的配置一致
springProperty的name属性必须和property的value一致
这样就可以放心在本地或者线上环境安心的配置日志的输出位置啦
但是这块呢 第一次用logback.xml的童鞋 告知一下log的作用
logs和logs/都表示保存到程序运行目录,在tomcat中为bin目录
/logs表示保存到系统目录
../logs表示保存到程序运行目录的父目录
然后在线上的.sh命令呢正常配置即可
以上就是今天碰到的问题 感谢各位大佬观看
jump jump big old 赞赏了你的帖子~