问题描述:
Failed to bind properties under 'spring.dubbo.application' to com.alibaba.dubbo.config.ApplicationConfig:
Property: spring.dubbo.application.logger Value: Slf4j Origin: class path resource [application.properties]:17:33 Reason: No such extension com.alibaba.dubbo.common.logger.LoggerAdapter by name Slf4j
这里问题显示没有找到配置为spring.dubbo.application.logger,值为Slf4j的日志名称
并且提示:
No such extension com.alibaba.dubbo.common.logger.LoggerAdapter by name Slf4j
1.根据提示进入源码,通过配置文件点击logger进入源码:
2.在源码配置类中看到了logger
3.找一下这个logger的set()方法
可以看到这个setLogger接受我们配置的参数,并且通过LoggerFactory.setLoggerAdapter()进行配置,看到setLoggerAdapter说明离答案不远了,进入这个日志工厂LoggerFactory
4.进入该类看到两个static修饰的 setLoggerAdapter方法,说明logger配置就在这个类中,离答案更近了
5.让我们看看这个静态方法是在哪里被调用的,果然在下面发现了静态代码块去调用这个方法
可以看到它的加载顺序是slf4j、jcl、log4j、jdk
最后发现问题是在书写时将Slf4j的S大写了,导致这块比较的时候比较是失败的,而项目中也没有导入其他相关日志框架,导致问题产生,我们将slf4j正确书写,项目启动成功