Spring Boot 2.x中如何使用Log4j2记录日志
前沿技术早知道,弯道超车有希望
积累超车资本,从关注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的情况:
下面这个是使用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记录日志相关推荐
- Spring Boot微服务中Chaos Monkey的应用
点击蓝色"程序猿DD"关注我哟 有多少人从未在生产环境中遇到系统崩溃或故障?当然,你们每个人迟早都会经历它.如果我们无法避免失败,那么解决方案似乎是将我们的系统维持在永久性故障状态 ...
- 如何在Spring Boot应用程序中使用配置文件
你好朋友, 在本教程中,我们将学习如何在Spring Boot应用程序中使用配置文件. 我们将在本教程中讨论以下几点: 1.什么是Spring Boot Profile,为什么我们需要分析 2.如何使 ...
- 在使用Gradle构建的Spring Boot应用程序中覆盖Spring Framework版本
如果要使用或仅通过Spring Boot检查Spring的最新版本,但当前的Spring Boot版本取决于旧的Spring版本,则需要稍微调整Gradle构建配置. 例如,在撰写本文时,Spring ...
- Spring Boot 提取pdf中的文字
Spring Boot 提取pdf中的文字 提取pdf中的文字,由于字体不同,可能会提取出来乱码.(友情提示:建议先pdf文件转成图片,然后调用百度api提取文字,准确率高.跳转链接:https:// ...
- Spring Boot(十)Logback和Log4j2集成与日志发展史
一.简介 Java知名的日志有很多,比如:JUL.Log4j.JCL.SLF4J.Logback.Log4j2,那么这些日志框架之间有着怎样的关系?诞生的原因又是解决什么问题?下面一起来看. 1.1 ...
- Spring Boot应用集成Docker并结合Log4j2、Kafka、ELK管理Docker日志
Preface 原文链接: http://yangbingdong.com/2018/spring-boot-docker-elk/ 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维 ...
- Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题
LocalDate. LocalTime. LocalDateTime是Java 8开始提供的时间日期API,主要用来优化Java 8以前对于时间日期的处理操作.然而,我们在使用Spring Clou ...
- Spring Boot - 自动装配中的不可忽视的@Import
文章目录 Pre 四种处理方式 从@SpringBootApplication注解说起 @SpringBootApplication组合注解说明 @Target(ElementType.TYPE) @ ...
- 【spring boot】url中传递session id
前言 tomcat spring boot url中传递session id 默认情况,session id 是通过 cookie 传递的. 使用 cookie 传递 session id 时,默认的 ...
最新文章
- Java GC 日志解析
- 打造一个TB级微服务日志监控平台
- java 之 运算符
- mysql 表单属性_php表单常用属性有什么?
- MySQL 事物隔离级别
- 从零学javascript_我刚刚问了23,000个开发人员他们对JavaScript的看法。 这是我学到的。...
- CSS布局与表格布局之我见 [2007年8月3日]
- ExtFrame的特点与缺点
- 求三维空间两直线交点
- matlab读取图像的RGB
- mysql查询当月过生日_MySql查询本周/月或下周/月过生日的人
- 从投入产出简析直复营销
- 什么是共识?(理论篇)
- 鸢尾花分类算法——机器学习笔记
- python绘制三维地形_三维数字场地模型(上篇):Civil3D 地形的生成
- 25套五彩缤纷的矢量网页背景图片素材【免费下载】
- 亿图图示--工业自动化模块--啤酒生产处理流程简图和热水冷凝处理架构
- 零售界的“GDP联盟” 正在打破流量贫瘠魔咒?
- 谷歌play商店_Google Play商店优化的17个技巧
- 分段管理机制(段描述符,描述符表,段选择符)
热门文章
- 对Linux系统中的时钟和时间的探讨
- 第一个WDM驱动崩溃...
- JQuery操作checkbox、radio
- 繁星代码生成器0.91版 【视频】
- SQLSERVER拆分字符串的函数(表值函数)
- python3 字符串 hex 相互转换 代替python2 decode(‘hex’)
- linux gcc 静态编译 减小体积
- linux watch 命令简介 监测 监控变化
- python3 import 和__import__() 的区别
- Linux Rootkit 系列二:基于修改 sys_call_table 的系统调用挂钩