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的区别

  1. logback.xml:这是Logback的标准配置文件,Spring Boot在启动时会加载这个文件。但是,它不支持Spring的Profile特性和高级特性,例如在日志中使用${springProperty}来引用Spring环境中的属性。

  2. 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命令呢正常配置即可

以上就是今天碰到的问题 感谢各位大佬观看

  • 27
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值