前沿技术早知道,弯道超车有希望

积累超车资本,从关注DD开始

上一篇我们介绍了Spring Boot 2.x中默认日志框架Logback的使用。今天继续说说日志,接下来我们要讲是前段时间爆出核弹漏洞的Log4j2。虽然出了漏洞,让很多小伙伴痛苦了1-2周(加班),但不可否认的是Log4j2依然是目前性能最好的日志框架。所以,当Logback性能上无法支撑的时候,替换使用Log4j2还是最为快速便捷的方法。下面,我们就来学习一下如何在Spring Boot 2.x版本中,替换Logback,使用Log4j2记录日志。

动手试一试

这里省略Spring Boot项目的基础创建,如果您还不会可以看本教程的快速入门。

下面的操作你可以基于Spring Boot 2.x中默认日志框架Logback一文的例子继续下去,也可以用任何一个Spring Boot 2.x的项目来尝试。

第一步:在pom.xml中引入Log4j2的Starter依赖spring-boot-starter-log4j2,同时排除默认引入的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><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

第二步:在配置文件application.properties中,通过logging.config配置指定log4j2的配置文件位置,比如下面这样:

logging.config=classpath:log4j2.xml

第三步:在resource目录下新建log4j2.xml(这里不绝对,根据第二步中配置的内容来创建),然后加入log4j2的日志配置,比如,下面这样:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/></Console></Appenders><Loggers><Root level="INFO"><AppenderRef ref="Console"/></Root></Loggers>
</Configuration>

主要是方便大家理解如何把log4j2引入Spring Boot,对于log4j2如何配置这里不做详细介绍,所以这里就放个简单配置让程序跑起来即可。如果想深入了解log4j2的配置:https://logging.apache.org/log4j/2.x/manual/configuration.html

OK,到这里整合过程就结束了。是不是很简单呢?如果您学习过程中如遇困难?可以加入我们超高质量的Spring技术交流群,参与交流与讨论,更好的学习与进步!更多Spring Boot教程博客 http://blog.didispace.com,欢迎收藏与转发支持!

常见问题

可能有小伙伴会问,之前不是推荐大家用Slf4j来记录日志,隔离了具体实现的日志框架么?那我怎么知道这一顿操作之后,真的已经用上Log4j2了呢?

这个其实很好判断,大家只需要在用到日志的地方,加个端点,Debug跑起来,观察下log对象就可以了,比如:

下面这个是使用默认Logback的情况:

使用Logback

下面这个是使用Log4j2的情况

使用Log4j2

最后,因为之前Log4j2有过很大的漏洞问题,大家一定要用最新版本哦!

安全起见,建议您至少要用2.17.0以上的版本(如果用的Spring Boot 2.6.2+,那已经是2.17.0了,不需要担心)。当然,目前最新已经到2.17.1,您也可以自己升级到2.17.1来使用,如何升级呢?还是按照这篇文章介绍的操作即可。

代码示例

本文的完整工程可以查看下面仓库中2.x目录下的chapter8-2工程:

  • Github:https://github.com/dyc87112/SpringBoot-Learning/

  • Gitee:https://gitee.com/didispace/SpringBoot-Learning/

如果您觉得本文不错,欢迎Star支持,您的关注是我坚持的动力!

与优秀的人在一起,自己也会优秀起来

高质量技术交流群,您还没加入吗?

赶紧点击加入我们,享受一起成长的快乐!

前沿技术早知道,弯道超车有希望

积累超车资本,从关注DD开始

点击阅读原文,送你免费Spring Boot教程!

Spring Boot 2.x中如何使用Log4j2记录日志相关推荐

  1. Spring Boot微服务中Chaos Monkey的应用

    点击蓝色"程序猿DD"关注我哟 有多少人从未在生产环境中遇到系统崩溃或故障?当然,你们每个人迟早都会经历它.如果我们无法避免失败,那么解决方案似乎是将我们的系统维持在永久性故障状态 ...

  2. 如何在Spring Boot应用程序中使用配置文件

    你好朋友, 在本教程中,我们将学习如何在Spring Boot应用程序中使用配置文件. 我们将在本教程中讨论以下几点: 1.什么是Spring Boot Profile,为什么我们需要分析 2.如何使 ...

  3. 在使用Gradle构建的Spring Boot应用程序中覆盖Spring Framework版本

    如果要使用或仅通过Spring Boot检查Spring的最新版本,但当前的Spring Boot版本取决于旧的Spring版本,则需要稍微调整Gradle构建配置. 例如,在撰写本文时,Spring ...

  4. Spring Boot 提取pdf中的文字

    Spring Boot 提取pdf中的文字 提取pdf中的文字,由于字体不同,可能会提取出来乱码.(友情提示:建议先pdf文件转成图片,然后调用百度api提取文字,准确率高.跳转链接:https:// ...

  5. Spring Boot(十)Logback和Log4j2集成与日志发展史

    一.简介 Java知名的日志有很多,比如:JUL.Log4j.JCL.SLF4J.Logback.Log4j2,那么这些日志框架之间有着怎样的关系?诞生的原因又是解决什么问题?下面一起来看. 1.1 ...

  6. Spring Boot应用集成Docker并结合Log4j2、Kafka、ELK管理Docker日志

    Preface 原文链接: http://yangbingdong.com/2018/spring-boot-docker-elk/ 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维 ...

  7. Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题

    LocalDate. LocalTime. LocalDateTime是Java 8开始提供的时间日期API,主要用来优化Java 8以前对于时间日期的处理操作.然而,我们在使用Spring Clou ...

  8. Spring Boot - 自动装配中的不可忽视的@Import

    文章目录 Pre 四种处理方式 从@SpringBootApplication注解说起 @SpringBootApplication组合注解说明 @Target(ElementType.TYPE) @ ...

  9. 【spring boot】url中传递session id

    前言 tomcat spring boot url中传递session id 默认情况,session id 是通过 cookie 传递的. 使用 cookie 传递 session id 时,默认的 ...

最新文章

  1. Java GC 日志解析
  2. 打造一个TB级微服务日志监控平台
  3. java 之 运算符
  4. mysql 表单属性_php表单常用属性有什么?
  5. MySQL 事物隔离级别
  6. 从零学javascript_我刚刚问了23,000个开发人员他们对JavaScript的看法。 这是我学到的。...
  7. CSS布局与表格布局之我见 [2007年8月3日]
  8. ExtFrame的特点与缺点
  9. 求三维空间两直线交点
  10. matlab读取图像的RGB
  11. mysql查询当月过生日_MySql查询本周/月或下周/月过生日的人
  12. 从投入产出简析直复营销
  13. 什么是共识?(理论篇)
  14. 鸢尾花分类算法——机器学习笔记
  15. python绘制三维地形_三维数字场地模型(上篇):Civil3D 地形的生成
  16. 25套五彩缤纷的矢量网页背景图片素材【免费下载】
  17. 亿图图示--工业自动化模块--啤酒生产处理流程简图和热水冷凝处理架构
  18. 零售界的“GDP联盟” 正在打破流量贫瘠魔咒?
  19. 谷歌play商店_Google Play商店优化的17个技巧
  20. 分段管理机制(段描述符,描述符表,段选择符)

热门文章

  1. 对Linux系统中的时钟和时间的探讨
  2. 第一个WDM驱动崩溃...
  3. JQuery操作checkbox、radio
  4. 繁星代码生成器0.91版 【视频】
  5. SQLSERVER拆分字符串的函数(表值函数)
  6. python3 字符串 hex 相互转换 代替python2 decode(‘hex’)
  7. linux gcc 静态编译 减小体积
  8. linux watch 命令简介 监测 监控变化
  9. python3 import 和__import__() 的区别
  10. Linux Rootkit 系列二:基于修改 sys_call_table 的系统调用挂钩