浅谈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多线程爬虫简单示例
Mar 04 Python
Python使用正则表达式实现文本替换的方法
Apr 18 Python
50行Python代码实现人脸检测功能
Jan 23 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
Python基础教程之异常详解
Jan 10 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
python实现Oracle查询分组的方法示例
Apr 30 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
python中watchdog文件监控与检测上传功能
Oct 30 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 Python
进行数据处理的6个 Python 代码块分享
Apr 06 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/11/23 PHP
php获取目标函数执行时间示例
2014/03/04 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
JS可以控制样式的名称写法一览
2014/01/16 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
轮播的简单实现方法
2016/07/28 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
python使用sqlite3时游标使用方法
2018/03/13 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
使用python模拟命令行终端的示例
2019/08/13 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
2020/04/23 HTML / CSS
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
军训口号
2014/06/13 职场文书
2014年宣传工作总结
2014/11/18 职场文书
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android