我要将slf4j实现(基于logback的公司框架)集成到spring boot 2.0中。
在我的进展中,我发现默认的logback依赖性与我自己的依赖项冲突。以这种方式排除spring-boot-starter-logging
模块:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
冲突的错误消失了,但似乎spring boot使用我的库作为slf4j日志记录实现,就像之前的方式一样,我的自定义函数中没有任何工作。
我想知道是否有一种方法可以用我的代码替换日志系统以使其正常工作,但在spring.io网站上找不到关于此的参考资料。
答案 0 :(得分:0)
要禁用Spring Boot的LoggingSystem(默认为LogbackLoggingSystem),您需要设置以下系统属性
-Dorg.springframework.boot.logging.LoggingSystem=none
这是https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html和https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html的参考。
答案 1 :(得分:0)
错误
Exception in thread "main" java.lang.StackOverflowError
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
由log4j-sl4j-impl和log4j-to-sl4j的call-loop生成。
您可以解析不包括log4j到slf4j:
configurations {
all*.exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'
}
答案 2 :(得分:0)
在Spring-boot-starter-web项目中删除登录默认依赖项
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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
我们需要在类路径中放置一个名为以下属性文件之一的文件,然后重新启动项目
答案 3 :(得分:0)
您仅提供了pom.xml文件的一部分。问题可能在于,可能存在从其他依赖项到登录的传递依赖项。因此,您也必须像spring-boot-starter一样在该依赖项中进行相同的排除。现在,为了知道所有依赖项都具有这种可传递性,您可以打印pom.xml文件的依赖关系树。为此,转到包含pom.xml的文件夹。打开命令提示符。 然后输入 mvn依赖项:树。