log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment)
1 原因是使用log4j1,需要从依赖中找到所有的log4j 依赖将其排除!即可解决
文章最后给出springboot配置的参考依赖。
下图是:是使用log4j1的debug
将该依赖删除
org.springframework.cloud
spring-cloud-dependencies
Camden.SR5
pom
import
下图是 log体系图,解读:各个log实现通过桥接器可以实现互通的,主流还是 使用slf4j门面模式
如:tomcat 和 springboot 分别使用了不同的日志实现
Commons-logging 是tomcat默认的日志系统;
springboot 默认使用的是logback日志实现,common-logs并没有logback的实现;
3 maven日志相关的关键配置
org.springframework.boot
spring-boot-starter-parent
2.0.6.RELEASE
com.aliyun.openservices loghub-client-lib log4j log4j 0.6.15
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
spring boot starter 的日志依赖
ch.qos.logback
logback-classic
1.2.3
compile
org.apache.logging.log4j
log4j-to-slf4j
2.10.0
compile
org.slf4j
jul-to-slf4j
1.7.25
compile
4 常见问题
4.1 springboot 2 也引入了log4j2的实现,多个门面实现怎么办?
如果: springboot使用了log4j2的实现 同时也使用了 logback 就冲突了, 必须排除一个
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/xiayin/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/xiayin/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.10.0/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
S
解决方法:将web依赖中的spring-boot-starter包,排除logback依赖
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-logging
4.2 tomcat日志不打印了,只用springboot的日志,如何解?
因为springboot 默认使用的是logback日志实现,common-logs并没有logback的实现;必须使用桥接器,将tomcat的日志输出到门面接口;
解决方案:
org.springframework.boot
spring-boot-starter-log4j2
目的是引入 log4j-slf4j-impl 依赖包,输出jcl日志。如:阿里云 tablestore项目依赖的也是强 log4j-slf4j-impl
4.3 springboot 2.0+ 默认log实现有几个?
logback实现
ch.qos.logback
logback-classic
1.2.3
compile
true
log4j2实现
org.apache.logging.log4j
log4j-api
2.10.0
compile
true
org.apache.logging.log4j
log4j-core
2.10.0
compile
true
4.4 其他问题 基本解决方法也是定位到,核心包依赖问题上。
5 常用log4j2.xml