SpringBoot系列之使用切换log4j日志框架

ok,在pom文件右键->Diagrams->show Dependencies....,如图,找到spring-boot-starter-logging,可以看到SpringBoot的日志实现默认依赖与logback,ok,如果你对这些知识不是很理解的,建议先看我Springboot专栏的日志系列博客:https://smilenicky.blog.csdn.net/category_9195353.html

本博客要实现的是切换默认日志框架为log4j,当然是不建议这样做的,因为log4j有性能问题,所以其作者才开发了logback,不过作为学习的话,还是可以学一下怎么切换Springboot默认的日志框架

先去slf4j官网拿一张图:图示,切换日志框架,为了避免冲突,一般都是先排除日志框架的实现jar,然后再将之前博客提到的偷梁换柱jar,比如log4j-to-slf4j.jar等等先排除,然后再引入对应的日志实现jar,如图所示的slf4j-log4j12.jar,因为本博客并非入门教程,所以学习之前请先参考我之前Springboot日志方面的博客,再来学习



ok,基于slf4j官方提供的知识,我们就可以实践了,首先选中logback-classic.jar(logback实现jar)、log4j-to-slf4j.jar(将log4j API强制切换回slf4j的偷梁换柱jar),然后右键,选择exclusion

ok,再次打开pom文件,可以看到idea自动帮我们exclusion一些jar了

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>logback-classic</artifactId>
<groupId>ch.qos.logback</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-to-slf4j</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>

ok,避免日志冲突,exclusion了logback的实现jar和偷梁换柱的log4j-to-slf4j之后,我们还需要引入log4j的实现jar

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>

ok,这是slf4j官网的说法,但是我发现在一些旧的版本SpringBoot是有提供spring-boot-starter-log4j这个场景启动器的,所以我们可以更简便的做log4j引入

直接exclusion spring-boot-starter-logging:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

然后直接引入log4j的场景启动器,建议加上版本,因为有些版本并没有提供log4j配置,本博客是换回1.5.7才支持的,2.2.1的版本仲裁都没提供对应版本的

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

ok,然后在resources直接丢log4j.properties

# LOG4J rootCategory config
log4j.rootCategory=INFO, stdout, file
# LOG4J console config
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} %5p %c{1}:%L - %m%n # root日志输出
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=logs/springboot.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n

启动SpringBoot日志:

SpringBoot系列之切换log4j日志框架的更多相关文章

  1. 一、log4j日志框架的理论和不同场景使用

    1.日志框架: 工作中要进行Java输出日志时,你需要一个或者多个日志框架.框架能提供对象.方法和必要的配置来发送日志信息.Java语言本身有自带的日志实现包java.util.logging.还有很 ...

  2. Slf4j+Log4j日志框架入门

    (一).日志系统介绍 slf4j,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.简答的讲就是slf4j是一系列的 ...

  3. Log4j日志框架小记

    人啊,总是在学习中发现不足,不足中学习,学习中成长. 今天来系统记录一下对于常用日志组件的理解.配置.使用. 仅供参考, 错误之处请各路好汉不吝笔墨批评指正. 转载请注明出处 Log4j日志框架是Ap ...

  4. SpringBoot整合log4j日志框架

    Spring Boot 2.x默认使用Logback日志框架,要使用 Log4j2必须先排除 Logback. 加入修改依赖 <dependency> <groupId>org ...

  5. Log4j日志框架学习零到壹(一)

    日志是系统开发过程中用于排查问题重要的记录.通常使用日志来记录系统运行的行为,什么时间点发生了什么 事情.Java中常用的莫过于Log4j框架了.下面主要围绕Log4j的基础知识.Log4j的使用方式 ...

  6. log4j日志框架学习

    初识Log4j:      log4j有三个部分:           1.loggers 负责捕获日志信息.           2.appenders  负责输出信息到不同的目的地         ...

  7. Spring源码学习:第2步--使用SLF4j+Log4j日志框架替换掉其自身的commons-logging日志框架

    正如Spring官方文档所述,其底层的实现选择了commons-logging作为日志框架.这一"失足"性的选择,竟连Spring自身都抱怨.但是,谁叫Spring如此优秀呢,即使 ...

  8. log4j日志框架的使用

    java.util.logging.Logger——java 中提供的日志类 实际开发 90% 都是使用 log4j 记录日志,而 Log4j 底层就是 java.util.logging.Logge ...

  9. log4J日志框架

    log4j的配置:log4j是一个日志输出框架,就是用于输出日志的,主流框架大部分都是Log4j输出.Spring框架也可以通过Log4j输出日志 Log4j提供了强大的日志输出的自定义功能(1)通过 ...

随机推荐

  1. python学习-文件I/O

    12.2使用os.path操作目录 # os.path_test.py import os import time print(os.path.abspath("abc.txt") ...

  2. (转)python中@property详解

    转:https://www.cnblogs.com/zhangfengxian/p/10199935.html

  3. typescript 入门教程二

    ts中面向对象成员修饰符:public , private , protexted(ts官方网站:ts) 在ts中,默认的成员修饰符就是public public:是表示是公开的,在任何地方,都可以调 ...

  4. SpringBoot SpringCloud版本对应

  5. [正确配置]win7 PL/SQL 连接Oralce 11g 64位

    PL/SQL 版本号:15.0.5.1710 32位 win7 64位系统 instantclient 12.1 32位,PL/SQL不支持64位 关键问题 1.Not logged on 2.没有c ...

  6. 我发现了Unity3D的2D Light Renderer, 随后就把它抄了过来

    . 前几个月,偶然在群里看到有人讨论Unity3D光照,于是我又萌生了一个新的目标----把它抄过来! . 众所周知,3D渲染的整个流水线都跟光照密不可分,相关的技术更是数不甚数,而2D游戏的光照通常 ...

  7. 全方面讲解TensorFlow

    任何曾经试图在 Python 中只利用 NumPy 编写神经网络代码的人都知道那是多么麻烦.编写一个简单的一层前馈网络的代码尚且需要 40 多行代码,当增加层数时,编写代码将会更加困难,执行时间也会更 ...

  8. 有Bug?你的代码神兽选对了吗

    传说每一个优秀的程序员都有自己专属的镇码神兽 通过 工具网址 http://www.makepic.net/Tool/Image2ascii.html 将自己喜欢的神兽图片转成文本, 可以选择不同的分 ...

  9. IIS中如何设置域名

    如何在IIS中设置域名: 1,想好我们想要配置的本地域名,我们以www.baidu.com为例. 2,打开系统盘,一般默认的系统盘为C盘,打开:C:\Windows\System32\drivers\ ...

  10. 学习笔记60_python面向对象

    **** //可以给函数参数设置默认值 def stu_register(name,age,course,country="CN"): 若你的函数在定义时不确定用户想传入多少个参数 ...