好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

springBoot启动报错log4j冲突的解决方案

springBoot启动报错log4j冲突

先上一段报错内容

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/soft/apache-tomcat-8.5.31/webapps/ui/WEB-INF/lib/log4j-slf4j-impl-2.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/soft/apache-tomcat-8.5.31/webapps/ui/WEB-INF/lib/logback-classic-1.1.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/soft/apache-tomcat-8.5.31/webapps/ui/WEB-INF/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
......
Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.apache.logging.slf4j.Log4jLoggerFactory loaded from file:/D:/soft/apache-tomcat-8.5.31/webapps/ui/WEB-INF/lib/log4j-slf4j-impl-2.7.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.apache.logging.slf4j.Log4jLoggerFactory

springBoot 本地报错,查了一番,是logback搞得鬼,打开pom依赖树,搜索logback,发现在spring-boot-starter-web下有间接依赖上logback-classisc,搜索大神们的解答,就是在有这个依赖的dependency中除去他就行了。

?

1

2

3

4

5

6

7

8

9

10

< dependency >

         < groupId >org.springframework.boot</ groupId >

         < artifactId >spring-boot-starter-web</ artifactId >

         < exclusions >

                 < exclusion >

                     < groupId >ch.qos.logback</ groupId >

                    < artifactId >logback-classic</ artifactId >

                 </ exclusion >

            </ exclusions >

</ dependency >

SpringBoot启用log4j日志

pom.xml

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<!--排除默认的日志 -->

< 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 >

  <!--启用log4j日志 -->

< dependency >

   < groupId >org.springframework.boot</ groupId >

   < artifactId >spring-boot-starter-log4j</ artifactId >

   < version >1.2.8.RELEASE</ version >

</ dependency >

log4j.properties

?

1

2

3

4

5

6

7

8

9

10

11

log4j.rootLogger=debug, ServerDailyRollingFile, stdout

log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender

log4j.appender.ServerDailyRollingFile.DatePattern= '.' yyyy-MM-dd

log4j.appender.ServerDailyRollingFile.File=C\: //logs/notify-subscription.log

log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout

log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n

log4j.appender.ServerDailyRollingFile.Append= true

 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n

log4j.properties放在resources目录下,这个log4j是随便配的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/ss300400a/article/details/81098137

查看更多关于springBoot启动报错log4j冲突的解决方案的详细内容...

  阅读:21次