springboot整合logback的小坑

SpringBoot+Logback配置加载谜题
本文探讨了SpringBoot结合Logback在多环境部署下配置文件加载的优先级问题,揭示了logback-test.xml始终被加载的原因,并提供了解决方案。

springboot+logback是非常成熟的套装了,通常为了在多环境启动,我们会有多个配置文件通过不同的启动参数满足不同环境的运行需求。如图所示。

 

当我们创建3个不同环境的logback文件(logback-dev.xml/logback-test.xml/logback-prod.xml)时,通过启动日志可以发现,加载的文件永远是logback-test.xml。

查看logback源码可以发现,在启动时ContextInitializer按以下顺序尝试获取classpath下的配置文件。

logback.groovy -> 
logback-test.xml ->
logback.xml

所以如果我们将配置文件命名为logback-test.xml,加载的永远是logback-test.xml,将文件名改为logback_test.xml后,问题解决。

 

### Spring Boot与Logback集成实例 在Spring Boot应用程序中,默认情况下已经集成了Logback作为日志框架。为了自定义Logback的行为,可以通过创建`logback-spring.xml`文件来实现更精细的日志控制[^1]。 #### 创建 `logback-spring.xml` 通常建议将该文件放置于项目的`src/main/resources/`目录下: ```xml <configuration> <!-- 定义日志级别 --> <property name="LOG_LEVEL" value="INFO"/> <!-- 控制台输出配置 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern> </encoder> </appender> <!-- 文件输出配置 --> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>logs/app.log</file> <append>true</append> <encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> </encoder> </appender> <!-- 设置根记录器 --> <root level="${LOG_LEVEL}"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> </root> <!-- 特定包的日志设置 --> <logger name="com.example.myapp" level="DEBUG"/> </configuration> ``` 上述XML片段展示了如何通过Logback配置文件指定不同的日志输出方式以及调整各个组件的日志等级。这里不仅设置了全局默认的日志级别为`INFO`,还特别指定了某个特定软件包下的类将以更高的调试(`DEBUG`)模式运行[^3]。 对于希望进一步了解如何利用SLF4J接口编写应用内日志语句的情况,可以查阅相关资料获取更多信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值