本文介绍了由以下原因引起:org.apache.logging.log4j.LoggingException:log4j-slf4j-impl不能与log4j-to-slf4j一起出现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的 Spring boot 2 项目中:
在 build.gradle
中:
dependencies {
implementation 'com.google.code.gson:gson:2.7'
implementation 'com.h2database:h2'
implementation 'javax.servlet:jstl:1.2'
implementation 'org.springframework.boot:spring-boot-devtools'
implementation('org.springframework.boot:spring-boot-starter') {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation "org.springframework.boot:spring-boot-starter-web"
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testImplementation 'org.junit.jupiter:junit-jupiter:5.5.2'
}
在 src/resources/log4j2.xml
中:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="Console"
class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<!-- l, L, M - is extremely slow. It's use should be avoided unless execution
speed is not an issue. -->
<param name="ConversionPattern"
value="%p: %d{dd.MM.yyyy HH:mm:ss.SSS} %l %n %m%n"/>
</layout>
</appender>
<appender name="File"
class="org.apache.log4j.DailyRollingFileAppender">
<param name="Encoding" value="UTF-8"/>
<param name="File" value="logs/trace.log"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- l, L, M - is extremely slow. It's use should be avoided unless execution
speed is not an issue. -->
<param name="ConversionPattern"
value="%p: %d{dd.MM.yyyy HH:mm:ss.SSS} %l %n %m%n"/>
</layout>
</appender>
<!-- Application Loggers -->
<logger name="com.journaldev.spring">
<level value="info"/>
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info"/>
</logger>
<logger name="org.hibernate">
<level value="info"/>
</logger>
<logger name="org.springframework.beans">
<level value="info"/>
</logger>
<logger name="org.springframework.context">
<level value="info"/>
</logger>
<logger name="org.springframework.web">
<level value="info"/>
</logger>
<!-- The root category is used for all loggers unless a more specific logger
matches. If none of the loggers are assigned a level, then all loggers inherit
the level of the root logger which is set to DEBUG by default -->
<root>
<level value="ALL"/>
<appender-ref ref="Console"/>
<!-- <appender-ref ref="File" /> -->
</root>
</log4j:configuration>
在我的控制器中:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class CategoryController {
private CategoryRepository categoryRepository;
private static Logger logger = LoggerFactory.getLogger(CategoryController.class);
@GetMapping("/categories")
public String getCategories(Model model) {
logger.debug("getCategories>>>>>>>>>>>>>>>>");
model.addAttribute("categoryList", this.categoryRepository.findAll());
return "categories/category_list";
}
}
但是当我启动项目时出现错误:
But when I start project I get error:
推荐答案
根据Spring的文档(如Simon所指出的),我们开始从所有库中排除"spring-boot-starter-logging"模块>,不仅来自"spring-boot-starter-web".
According with Spring's documentation (as pointed by Simon), we wave to exclude the "spring-boot-starter-logging" module from all libraries, not only from "spring-boot-starter-web".
configurations {
...
all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}
...而不是...
...instead of...
dependencies {
...
implementation('org.springframework.boot:spring-boot-starter') {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}
我自己也遇到了同样的问题,并通过此解决方案得以解决.
Just had myself the same problem and solved with this solution.
这篇关于由以下原因引起:org.apache.logging.log4j.LoggingException:log4j-slf4j-impl不能与log4j-to-slf4j一起出现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!