一、场景示例
想把springboot项目的日志实现改为log4j2:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
而springboot默认的日志实现为logback,发现pom.xml中的很多starter都包含spring-boot-starter-logging:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>1.5.2.RELEASE</version>
</dependency>
两个同时存在会有问题,比如报:
SLF4J: Class path contains multiple SLF4J bindings
二、解决办法
全局排除spring-boot-starter-logging的依赖。把spring-boot-starter-logging写成独立的dependency,然后用exclusion排除其中的所有依赖,就等于没有依赖spring-boot-starter-logging了:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>