浅谈spring boot 集成 log4j 解决与logback冲突的问题

作者:思念是荒芜的梦 时间:2023-06-22 13:12:05 

现在很流行springboot的开发,小编闲来无事也学了学,开发过程中遇见了log4j日志的一个小小问题,特此记载。

首先在pox.xml中引入对应的maven依赖:


   <!-- 引入log4j-->
   <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
   </dependency>
   <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-log4j</artifactId>
     <version>1.3.8.RELEASE</version>
   </dependency>

然后在src/resources/下新建log4j.properties文件(摘抄自网上):


log4j.rootLogger=info,error,CONSOLE,DEBUG
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = info
log4j.appender.info.append=true
log4j.appender.info.File=d://springboot3/logs/api_services_info.log
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = error
log4j.appender.error.append=true
log4j.appender.error.File=d://springboot3/logs/error/api_services_error.log
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold = DEBUG
log4j.appender.DEBUG.append=true
log4j.appender.DEBUG.File=d://springboot3/logs/debug/api_services_debug.log

在application.yml中加入如下配置:


logging:
config: src/main/resources/log4j.properties

至此,log4j的配置完毕,启动项目,发现会报错:


SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/tony/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/tony/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
12:02:26.963 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Included patterns for restart : []
12:02:26.969 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Excluded patterns for restart : [/spring-boot-actuator/target/classes/, /spring-boot-devtools/target/classes/, /spring-boot/target/classes/, /spring-boot-starter-[\w-]+/, /spring-boot-autoconfigure/target/classes/, /spring-boot-starter/target/classes/]
12:02:26.969 [main] DEBUG org.springframework.boot.devtools.restart.ChangeableUrls - Matching URLs for reloading : [file:/F:/work_intel/code/demo1/target/classes/]
Logging system failed to initialize using configuration from 'src/main/resources/log4j.properties'

这是因为与logback的冲突并未解决,导致启动失败,根据上面的报错信息,找到logback-classic-1.2.3.jar和slf4j-log4j12-1.7.25.jar的相应位置删除,并在pom.xml中加入如下排除代码:


  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
     <!-- 排除默认的logback日志,使用log4j-->
     <exclusions>
       <exclusion>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-logging</artifactId>
       </exclusion>
       <exclusion>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-log4j12</artifactId>
       </exclusion>
     </exclusions>
   </dependency>

启动发现一切正常,至此,log4j的配置完毕。

来源:https://blog.csdn.net/g631521612/article/details/82381435

标签:spring,boot,log4j,logback
0
投稿

猜你喜欢

  • win10系统下Anaconda3安装配置方法图文教程

    2022-08-06 23:01:49
  • JavaScript实现复制内容到粘贴板代码

    2024-04-25 13:14:01
  • python实现字典(dict)和字符串(string)的相互转换方法

    2021-10-19 18:22:44
  • pytorch plt.savefig()的用法及保存路径

    2021-04-28 12:55:44
  • Python必考的5道面试题集合

    2021-07-11 19:38:41
  • Python3开发环境搭建详细教程

    2023-11-12 10:46:28
  • 从p开始,循序渐进学习WEB标准

    2008-03-08 18:53:00
  • Python数据传输黏包问题

    2023-04-21 13:05:22
  • python实现人脸识别经典算法(一) 特征脸法

    2021-07-15 11:35:03
  • vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀

    2024-05-05 09:08:16
  • ajax在js中和jQuery中的用法实例详解

    2024-02-26 06:12:31
  • mysql 8.0.15 winx64解压版图文安装教程

    2024-01-16 08:22:32
  • 禁止拷贝网页内容的js代码

    2024-04-25 13:07:50
  • python 将字符串中的数字相加求和的实现

    2022-11-03 22:31:08
  • 一篇文章搞懂:词法作用域、动态作用域、回调函数及闭包

    2022-10-01 00:21:05
  • Python爬虫工具requests-html使用解析

    2021-10-23 02:20:27
  • 一段Asp301重定向过程代码

    2010-05-04 16:38:00
  • asp自动补全html标签自动闭合(正则表达式)

    2013-06-01 20:01:59
  • 深入理解Python内置函数map filter reduce及与列表推导式对比

    2022-06-30 21:39:11
  • 如何让新页面在新窗口打开?

    2009-04-12 19:41:00
  • asp之家 网络编程 m.aspxhome.com