Spring Boot 如何使用 Log4j2 进行日志记录

Spring Boot 如何使用 Log4j2 进行日志记录

在开发 Java 应用程序时,日志记录是非常重要的一环。Spring Boot 提供了多种日志输出方式,其中 Log4j2 是一种比较常用的日志框架。本文将介绍如何在 Spring Boot 应用程序中使用 Log4j2 进行日志记录。

在这里插入图片描述

为什么选择 Log4j2

Log4j2 是 Apache 软件基金会的一个日志框架,它是 Log4j 的升级版,具有更高的性能和更强的功能。Log4j2 可以根据日志级别、日志分类和输出目的地等多种条件进行灵活配置,支持日志异步输出和多线程安全等特性。此外,Log4j2 可以通过配置文件进行灵活的配置,也可以通过编程方式进行配置。

集成 Log4j2

添加依赖

在 pom.xml 文件中添加 Log4j2 的依赖:

<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.14.1</version>
</dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.14.1</version>
</dependency>

配置 Log4j2

在 resources 目录下创建 log4j2.xml 文件,用于配置 Log4j2。

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

在上面的配置文件中,定义了一个名为 Console 的输出目的地,用于将日志输出到控制台。配置文件中还定义了一个名为 Root 的日志记录器,它的日志级别是 info,它的输出目的地是 Console。

使用 Log4j2

在 Spring Boot 应用程序中使用 Log4j2 非常简单,只需要在代码中导入 Log4j2 的相关类,然后使用相应的 API 进行日志记录即可。

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;@RestController
public class HelloController {private static final Logger logger = LogManager.getLogger(HelloController.class);@GetMapping("/hello")public String hello() {logger.info("hello world");return "hello world";}
}

在上面的代码中,使用 LogManager.getLogger 方法获取名为 HelloController 的日志记录器,然后使用 logger.info 方法输出一条日志信息。

配置 Log4j2 的输出目的地

Log4j2 可以将日志输出到多种目的地,比如控制台、文件、数据库等。下面介绍如何配置 Log4j2 的文件输出目的地。

添加依赖

在 pom.xml 文件中添加 Log4j2 的依赖:

<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.14.1</version>
</dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.14.1</version>
</dependency>
<dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>3.4.2</version>
</dependency>

配置 Log4j2

在上面的 Log4j2 配置文件中添加一个 FileAppender,用于将日志输出到文件中。

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

在上面的配置文件中,定义了一个名为 File 的输出目的地,用于将日志输出到 logs/app.log 文件中。

使用 Log4j2

在代码中使用 Log4j2 记录日志时,需要在类中声明一个 Logger 对象,并使用相应的 API 进行日志记录。

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;@RestController
public class HelloController {private static final Logger logger = LogManager.getLogger(HelloController.class);@GetMapping("/hello")public String hello() {logger.info("hello world");return "hello world";}
}

在上面的代码中,使用 LogManager.getLogger 方法获取名为 HelloController 的日志记录器,然后使用 logger.info 方法输出一条日志信息。

总结

本文介绍了如何在 Spring Boot 应用程序中使用 Log4j2 进行日志记录。首先,我们添加了 Log4j2 的依赖,然后在 resources 目录下创建了 log4j2.xml 文件,定义了日志输出目的地和日志记录器等配置。最后,我们在代码中使用 Log4j2 API 进行日志记录,并输出到控制台和文件中。Log4j2 具有强大的日志记录功能和灵活的配置方式,可以帮助我们更好地进行日志记录和管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/103.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Tomcat控制台窗口输出乱码问题

由于编码的问题&#xff0c;tomcat的控制台窗口输出的都是中文乱码&#xff0c;这明显是编码格式导致的&#xff0c;只要找到对应的编码格式修改一下就好了&#xff0c; 由于我的服务器编码是GBK&#xff0c;所有只需把输出的编码修改为GBK就行了。 936就是GBK编码。找到tomca…

相机去畸变

1. 背景 在做图像感知工作过程中会遇到需要处理相机畸变的情况&#xff0c;如SLAM、3D重建等&#xff0c;则需要了解一些常见相机模型的成像过程&#xff0c;以及依据成像过程实现去除相机成像的畸变。 注意&#xff1a;这篇文章并不涉及太多相机参数畸变原理&#xff0c;更多…

使用亮数据Bright Data解决出境电商问题

目录 一、出境电商的困境和问题1、困境一&#xff1a;获取准确的市场数据&#xff08;1&#xff09;数据的时效性和可靠性&#xff08;2&#xff09;数据的全面性和多样性&#xff08;3&#xff09;数据的实时更新和持续监测 2、困境二&#xff1a;克服地域限制和语言障碍&…

我准备蓝桥杯的这一年

我准备蓝桥杯的这一年 文章目录 我准备蓝桥杯的这一年起步和目标确定渐入佳境焦虑疲惫&#xff0c;一天又一天国赛我来力总结 我将我这段 流水账分为四个阶段。谨以此文&#xff0c;祭奠我这一年来的焦虑、白发~ &#xff0c;最终也取得了预期的成绩。不知未来再看此章会作何感…

PHP 人才信息与招聘系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 人才信息与招聘系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为PHP APACHE&#xff0c;数据 库为mysql5.0&#xff0c;使用php语言开发。…

Postman设置断言

目录 前言&#xff1a; 一、断言的定义 二、Postman断言的语法 三、Postman中chai.js断言常用语法 前言&#xff1a; 在进行API测试时&#xff0c;断言是一项重要的功能。它能帮助我们验证接口的响应是否符合预期结果&#xff0c;从而确保API的正确性和可靠性。在Postman中…

科技资讯|苹果新专利曝光:手势增强用户的交互体验

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的最新清单&#xff0c;苹果公司获得了一项编号为 US 20230195237 A1 的专利&#xff0c;展示了使用手势导航用户界面的交互体验。 苹果这项专利涉及 iPhone、iPad、Apple Watch 和 Mac&#xff0c;使用屏幕生成组件和…

Itext 7 生成pdf带有背景图

Itext 7 生成pdf带有背景图并下载PDF到本地 引入jar包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.0.3</version><type>pom</type></dependency>代码实现 Get…

来酷智生活,Type-C十二合一扩展坞来了

联想最新推出的“来酷智生活Type-C十二合一扩展坞”为用户带来更多接口选择&#xff0c;方便实用。 这款扩展坞包含12个接口&#xff0c;包括2个USB 3.2&#xff0c;2个USB 2.&#xff0c;2个HDMI接口&#xff0c;TF卡插槽&#xff0c;SD卡插槽&#xff0c;DP接口&#xff0c;P…

十分钟实现 Android Camera2 视频录制

1. 前言 因为工作中要使用Android Camera2 API&#xff0c;但因为Camera2比较复杂&#xff0c;网上资料也比较乱&#xff0c;有一定入门门槛&#xff0c;所以花了几天时间系统研究了下&#xff0c;并在CSDN上记录了下&#xff0c;希望能帮助到更多的小伙伴。 上两篇文章们使用…

快速入门微信小程序

文章目录 快速入门微信小程序1、微信小程序的注册1.1 注册账户1.2 激活1.3 登记信息1.4 下载微信开发工具1.5 使用微信开发工具创建一个小程序 2、导入官方的Demo2.1 下载官方Demo2.2 导入官方Demo2.3 运行官方Demo 3、编写自己的Demo3.1 创建微信小程序3.2 微信小程序常见参数…

机房动环是什么?内附最新机房动环监控系统报价

伴随着计算机信息化的发展和物联网的广泛运营&#xff0c;为了减少人员维护成本&#xff0c;实现智能化监控管理&#xff0c;机房动环监控系统逐渐被应用开来。通过一套完整的机房动环监控系统&#xff0c;一个偌大的机房就可以实现24小时无人值守。机房动环是什么&#xff1f;…