一次springboot日志不生效问题深入分析

本文深入分析了SpringBoot日志不生效的问题,主要原因是配置变动导致日志读取失败。在启动过程中,LoggingSystem根据logback、log4j、javaLog的优先级选择日志实现。当logging.config配置在bootstrap中未被处理时,将无法按预期配置日志,导致日志不打印。解决方案是确保logging.config配置正确,并在正确的位置被加载。
摘要由CSDN通过智能技术生成

springboot日志不生效问题深入分析

auth by:yangs , at 2022-09-22

现象

在一次环境排查问题中,发现某系统日志不打印。通过各种排查,总结后引起原因为配置这块后面改动比较多,有配置移动,打包脚本优化涉及关联改动。导致错误配置引起日志读取失败。无法到达预期配置的效果。

深入分析

在LoggingApplicationListener进行日志系统处理。
在启动初期LoggingSystem会根据引入包判断引用哪种日志实现。按照logback,log4j,javaLog的优先级顺序,判断类是否加载决定日志具体实现。
LoggingSystem初始化
判断是否引入对应的jar
LoggingSystem决定日志具体实现方式
接着进入环境配置处理。
在bootstrap处理里面可以看到,而恰好修改过后的配置logging.config放这个文件里面。
加载bootstrap

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`@SpringBootApplication` 是 Spring Boot 提供的一种便捷注解,它结合了 `@SpringBootConfiguration`、`@EnableAutoConfiguration` 和 `@ComponentScan` 注解的功能,通常用于标记一个主配置类,简化了 Spring 应用的初始配置和组件扫描。 如果 `@SpringBootApplication` 注解不生效,可能是以下几个原因: 1. **配置类未正确使用**:确保你的主配置类(通常是包含 `@SpringBootApplication` 的那个类)被正确地声明为 `@Configuration`,并且继承了 `SpringApplication` 或者扩展了 `SpringBootApplication`。 ```java @SpringBootApplication public class MyApp extends SpringApplication { // ... } ``` 2. **缺少启动类**:如果你的应用没有主启动类,或者主启动类没有被正确地配置为 `main` 方法,也会导致 `@SpringBootApplication` 无法启动应用程序。 3. **依赖注入问题**:检查是否有任何 @Autowired 或 @Repository, @Service, @Controller 等注解的字段或方法未正确注入。 4. **自动配置冲突**:某些自定义的配置或第三方库可能与 Spring Boot 的默认自动配置冲突。查看日志中的错误信息,看看是否有任何异常或警告。 5. **环境变量设置**:有些情况下,`@SpringBootApplication` 只在特定环境下生效。确认应用是否在正确的环境(如开发、生产)下运行。 6. **IDE问题**:有时候 IDE 的自动构建设置可能会影响应用的启动。确保从命令行直接运行应用也能正常启动。 若想解决这个问题,可以逐一排查上述原因,并查看应用的日志输出以获取更详细的错误信息。如果问题仍然存在,请提供具体的代码片段和错误日志,以便于更准确地定位问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值