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


Posted in Python onFebruary 20, 2020

现在很流行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的配置完毕。

以上这篇浅谈spring boot 集成 log4j 解决与logback冲突的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多进程同步Lock、Semaphore、Event实例
Nov 21 Python
浅谈Python中copy()方法的使用
May 21 Python
python下10个简单实例代码
Nov 15 Python
python检索特定内容的文本文件实例
Jun 05 Python
python 以16进制打印输出的方法
Jul 09 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
python多进程并行代码实例
Sep 30 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
python Tornado框架的使用示例
Oct 19 Python
Python OpenCV读取显示视频的方法示例
Feb 20 #Python
基于spring boot 日志(logback)报错的解决方式
Feb 20 #Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 #Python
python logging.basicConfig不生效的原因及解决
Feb 20 #Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 #Python
python logging设置level失败的解决方法
Feb 19 #Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 #Python
You might like
正则表达式语法
2006/10/09 Javascript
url decode problem 解决方法
2011/12/26 PHP
PHP static局部静态变量和全局静态变量总结
2014/03/02 PHP
php实现字符串翻转的方法
2015/03/27 PHP
详解php的socket通信
2015/08/11 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
Position属性之relative用法
2015/12/14 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
ionic实现带字的toggle滑动组件
2016/08/27 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
Python中os.path用法分析
2015/01/15 Python
python中迭代器(iterator)用法实例分析
2015/04/29 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
python实现3D地图可视化
2020/03/25 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
django跳转页面传参的实现
2020/09/17 Python
幼儿园评语大全
2014/04/17 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
导游词之桂林
2019/08/20 职场文书