1. 程式人生 > >Springboot啟動logback與slf4j的jar衝突

Springboot啟動logback與slf4j的jar衝突

使用Maven管理SpringBoot專案,啟動的時候遇到異常:

Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation 

該異常的原因是Springboot本身使用logback列印日誌,但是專案中其他的元件依賴了slf4j,這就導致了logback與slf4j的jar包之間出現了衝突,這種情況下,有兩種解決方式:

1,去除slf4j,繼續使用lagback

    這種方式需要在pom.xml檔案中找到所有依賴了slf4j的元件,在<dependency>中使用<exclusions>排除slf4j的依賴

2,去除logback,改為使用slf4j

    pom.xml去掉,同時去掉沒有用的配置檔案logback-spring.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

<exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-logging</artifactId>
               
</exclusion>
</exclusions>
</dependency>

使用log4j或者slf4j的方式列印日誌,別忘記了配置檔案log4j.properties

具體選擇那種方式要根據少數服從多數的原則,如果很多元件都依賴了slf4j,那麼就選擇使用slf4j,去掉logback

相反,如果自有個別組件依賴了slf4j,可以排除slf4j,繼續使用logback。