浅谈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使用PyGame绘制图像并保存为图片文件的方法
Apr 24 Python
python开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
Python探索之创建二叉树
Oct 25 Python
pandas 根据列的值选取所有行的示例
Nov 07 Python
Python队列RabbitMQ 使用方法实例记录
Aug 05 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
python+Django+pycharm+mysql 搭建首个web项目详解
Nov 29 Python
python 读取数据库并绘图的实例
Dec 03 Python
Python的形参和实参使用方式
Dec 24 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 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
简单的php数据库操作类代码(增,删,改,查)
2013/04/08 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
深入理解React高阶组件
2017/09/28 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
js实现列表按字母排序
2020/08/11 Javascript
Python中文件操作简明介绍
2015/04/13 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
python爬虫要用到的库总结
2020/07/28 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
运动会通讯稿50字
2014/01/30 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
食品安全工作方案
2014/05/07 职场文书
志愿者个人总结
2015/03/03 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
浅谈Python协程asyncio
2021/06/20 Python