修复报错: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from file:/D:/hdc/soft/maven/repository/org/slf4j/slf4j-log4j12/1.7.30/slf4j-log4j12-1.7.30.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.Log4jLoggerFactory at org.springframework.util.Assert.instanceCheckFailed(Assert.java:702) at org.springframework.util.Assert.isInstanceOf(Assert.java:621) at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:290) at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:117) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:232) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:213) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127) at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:76) at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:53) at java.util.ArrayList.forEach(ArrayList.java:1257) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:53) at org.springframework.boot.SpringApplication.run(SpringApplication.java:317) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1309) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1298) at com.shiyi.Application.main(Application.java:38) 代码上下文:
使用通义灵码,问答
这个错误是因为在类路径上同时存在多个日志框架的实现,导致Spring Boot无法确定使用哪一个。具体来说,你的项目中同时引入了Logback和Log4j的日志实现。
要解决这个问题,你可以选择以下几种方法之一:
### 方法一:移除Log4j依赖
如果你希望使用Logback作为日志框架,可以移除Log4j的依赖。编辑你的`pom.xml`文件,删除或注释掉以下依赖:
```xml
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
</dependency>
```
### 方法二:移除Logback依赖
如果你希望使用Log4j作为日志框架,可以移除Logback的依赖。编辑你的`pom.xml`文件,删除或注释掉以下依赖:
```xml
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
```
### 方法三:配置优先级
如果你使用的是WebLogic服务器,可以在`WEB-INF/weblogic.xml`中配置优先使用某个日志框架。例如,优先使用SLF4J:
```xml
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
<container-descriptor>
<prefer-application-packages>
<package-name>org.slf4j.*</package-name>
</prefer-application-packages>
</container-descriptor>
</weblogic-web-app>
```
### 方法四:使用`logback-spring.xml`配置文件
确保你的项目中有一个`logback-spring.xml`配置文件,并且正确配置了Logback。例如:
```xml
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>
```
### 代码示例
假设你选择移除Log4j依赖,你的`pom.xml`文件可能看起来像这样:
```xml
<dependencies>
<!-- 其他依赖 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 注释掉或删除以下依赖 -->
<!--
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
</dependency>
-->
<!-- 其他依赖 -->
</dependencies>
```
通过以上方法之一,你应该能够解决这个日志框架冲突的问题。
然后查找冲突的包
根据找到的包,排除冲突包
成功解决包冲突