Spring Boot入门(21):使用Spring Boot和Log4j2进行高效日志管理:配置详解

Spring Boot 整合 Log4j2

前言

Log4j2是Apache软件基金会下的一个日志框架,它是Log4j的升级版。与Log4j相比,它在性能和功能上有着极大的提升。Spring Boot本身已经默认集成了Logback作为日志框架,但如果需要使用Log4j2来替代Logback,只需要进行简单的配置即可。

本篇文章主要介绍Spring Boot如何整合Log4j2以及相应的配置方法。

摘要

本文将从以下几个方面介绍Spring Boot整合Log4j2的方法:

  1. 添加Log4j2的依赖;
  2. 配置Log4j2;
  3. 使用Log4j2记录日志。

Log4j2基本概念

在使用Log4j2之前,先来了解一下Log4j2的基本概念。

  • Logger:负责日志记录的核心组件,通常根据不同的日志级别记录不同的日志信息。
  • Appender:负责将日志记录输出到不同的目的地,如控制台、文件、数据库等。
  • Layout:负责格式化日志记录的信息。
  • Configuration:负责整个Log4j2的配置,包括Logger、Appender、Layout等组件的配置。

添加Log4j2的依赖

在pom.xml文件中添加以下依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</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>

第一个依赖是Spring Boot的starter依赖,第二个依赖是Log4j2的starter依赖。

需要注意的是,由于Spring Boot本身默认使用Logback作为日志框架,因此在添加Log4j2依赖时需要将spring-boot-starter-logging排除掉。

配置Log4j2

在src/main/resources目录下创建log4j2.xml文件,并添加Log4j2的配置信息。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/></Console><RollingFile name="RollingFile" fileName="logs/app.log"filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH-mm-ss}-%i.log.gz"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicy size="10MB"/></Policies><DefaultRolloverStrategy max="10"/></RollingFile></Appenders><Loggers><Logger name="com.example" level="debug" additivity="false"><AppenderRef ref="Console" /><AppenderRef ref="RollingFile" /></Logger><Root level="error"><AppenderRef ref="Console" /><AppenderRef ref="RollingFile" /></Root></Loggers>
</Configuration>

配置文件中定义了两个Appender,一个Console和一个RollingFile,并指定了它们的输出格式和输出策略。

在Loggers中定义了一个名为com.example的Logger,并将它的日志级别设置为debug,并将它的输出Appender设置为Console和RollingFile。同时,Root也设置了输出的Appender为Console和RollingFile,并将日志级别设置为error。Root是Logger的父级,如果Logger没有特别设置输出Appender,则会使用Root的输出Appender。

示例配置如下:
在这里插入图片描述

使用Log4j2记录日志

在Spring Boot中,可以使用注解的方式来记录日志。通过在类中添加注解@Log4j2,可以自动为该类生成一个Logger对象。

import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;@Service
@Log4j2
public class UserService {public void addUser(String username, String password) {log.info("Add user, username: {}, password: {}", username, password);}public void updateUser(String username, String password) {log.info("Update user, username: {}, password: {}", username, password);}public void deleteUser(String username) {log.info("Delete user, username: {}", username);}
}

上述代码中,使用了Lombok提供的@Log4j2注解,自动生成了一个名为log的Logger对象。在类中的方法中通过log对象记录了相应的日志信息。

小结

本文介绍了Spring Boot如何整合Log4j2以及相应的配置方法。

首先,需要在pom.xml文件中添加Log4j2的依赖;然后,在classpath下创建log4j2.xml配置文件,并定义相应的Appender和Logger;最后,在类中使用@Log4j2注解生成Logger对象,并使用log对象记录日志信息。

通过本文的介绍,相信读者已经了解了如何使用Log4j2来替代Logback,并且能够快速上手使用Log4j2记录日志。

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

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

相关文章

智慧校园:大数据助力校情分析

随着信息技术的快速发展&#xff0c;数据信息资源以井喷的姿态涌现。数据信息的大量涌现给人们带来丰富的数据信息资源&#xff0c;但面对海量的信息资源时&#xff0c;加大了人们对有效信息资源获取的难度&#xff0c;数据挖掘技术正是这一背景下的产物&#xff0c;基于数据挖…

小扎宣布开放 Meta Horizo​​n OS

日前&#xff0c;Meta以“混合现实的新时代”为题的博文宣布向第三方制造商开放Meta Horizon OS&#xff0c;包括华硕、联想和微软Xbox等等&#xff1a; Meta正在朝着为元宇宙建立一个更开放的计算平台的愿景迈出下一步。Meta正在向第三方硬件制造商开放赋能Meta Quest设备的操…

医院信创FTP要进行替代,有什么值得信赖的方案?

信创产业&#xff0c;即信息技术应用创新产业。其发展核心在于通过行业 应用拉动构建国产化信息技术软硬件底层架构体系和全生命周期生态体系&#xff0c;解决核心技术关键环节“卡脖子”的问题&#xff0c;为中国未来发展奠定坚实的数字基础。 2018 年 以来&#xff0c;受“华…

基于Springboot的网课管理系统

基于SpringbootVue的网课管理系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 课程表 论坛交流 学校公告 后端 学生管理 教师管理 班级管理 课程分类管理…

挑战一周完成Vue3实战项目硅谷甄选Day1:项目初始化、项目配置、项目集成

一、项目初始化 node v16.4.0以上&#xff08;查看node版本 : node -v&#xff09; pnpm 8.0.0&#xff08;npm i -g pnpm8.0.0&#xff09; 在想创建的位置新建文件夹自己命名 在此文件夹下cmd:pnpm create vite 选择如下配置 Project name&#xff08;项目名称&#xff0…

ROS1 驱动USB摄像头 2024年亲测

安装 查看官网文档A ROS Driver for V4L USB Cameras 里面提供了github链接&#xff0c;链接如下&#xff0c;这里要选择develop分支 将这个文件包放到你的工作空间的src目录下&#xff0c;然后回到工作空间编译catkin_make 此时报错no package libv4l2 found 参考stack ov…

【解决NodeJS项目无法在IDEA中调试的问题】使用JetBrains IDEA 2023 调试nodejs项目

项目采用Ant Design Pro React&#xff0c;使用前后端分离开发方式&#xff0c;后端可以很容易的打断点调试&#xff0c;但是前端通过网页进行调试&#xff0c;在IDEA中加了调试断点&#xff0c;但是没有什么用处。 解决方案如下&#xff1a; 点击新建运行配置 新建JavaScrip…

2024 年选择安全运营中心 (SOC) 工具指南

安全运营中心 (SOC) 是对抗网络威胁的前线。他们使用各种安全控制措施来监控、检测和快速响应任何网络威胁。这些控制措施对于确保信息系统全天候安全至关重要。 大型组织中的现代 SOC 与各种安全供应商合作&#xff0c;处理 75 到 100 种不同的工具。让我们探讨一下您可能遇到…

飞凌技术帖 | RK3568开发板的OTA升级教程

说起OTA我们应该都不陌生&#xff0c;它是一种可以为设备无损失升级系统的方式&#xff0c;能将新功能远程部署到产品上。我们不仅可以通过网络下载OTA升级包&#xff0c;也可以通过下载OTA升级包到SD卡或U盘后再对设备升级。 本文将通过飞凌嵌入式OK3568-C开发板来为大家介绍…

如何在Windows中使用NVM,如何在项目中使用NVM(nvm使用详细,如何使用nvm,使用nvm安装和切换各个nodejs版本)

简介&#xff1a;NVM全称Node Version Manager&#xff0c;是一个用于管理 Node.js 版本的工具&#xff0c;它允许你在同一台计算机上安装和切换多个 Node.js 版本。这对于我们来说特别有用&#xff0c;因为不同的项目可能需要不同版本的 Node.js 来运行。这里来记录一下 NPM &…

爬虫中怎么判断一个网页是否包含ajax请求

1、前言 在用爬虫抓取数据的时候&#xff0c;如果一个网页包含ajax请求&#xff0c;由于数据时动态加载的&#xff0c;直接根据网址是不能获取到想要的数据。因此&#xff0c;在爬虫需要首先判断一个网页是否包含ajax请求数据。 2、ajax请求 2.1 什么是ajax请求 AJAX Asynch…

新版ONENET(2024/4/24)通过view3.0可视化保姆级教程(一学就会)附效果图

⏩ 大家好哇&#xff01;我是小光&#xff0c;想要成为系统架构师的嵌入式爱好者。 ⏩上一篇是STM32通过ESP8266连接最新版的ONENET&#xff0c;成功将数据上传之后&#xff0c;本篇文章使用ONENET的view3.0可视化对数据进行可视化做一个详细教程。 ⏩感谢你的阅读&#xff0c;…

Java-AQS的原理

文章目录 基本概述1. 设计思想2. 基本实现 一些关键词语以及常用术语&#xff0c;主要如下&#xff1a; 信号量(Semaphore): 是在多线程环境下使用的一种设施&#xff0c;是可以用来保证两个或多个关键代码段不被并发调用&#xff0c;也是作系统用来解决并发中的互斥和同步问题…

SQLAlchemy的使用

SQLAlchemy中filter函数的使用 https://blog.csdn.net/m0_67093160/article/details/133318889

在浏览器输入网址,Enter之后发生了什么?

在浏览器输入网址&#xff0c;Enter之后发生了什么&#xff1f; 很多八股文会给出&#xff1a; 1. DNS Resolution2. Establishing a Connection3. Sending an Http Request4. Receiving the HTTP Response5. Rendering the Web Page 但今天我斗胆插入第0.9步URL Parsing&#…

适用于手机蓝牙的热敏晶体FA1612AS

EPSON推出的一款1612小尺寸无源热敏晶体:FA1612AS。FA1612AS的额定频率为38.4Mhz的晶体单元&#xff0c;采用无铅材料&#xff0c;符合ROHS标准&#xff0c;内置热敏电阻&#xff0c;可用于移动电话&#xff0c;蓝牙等。热敏晶体FA1612AS的产品特性:额定频率:38.4MHZ外部尺寸规…

JS----前端将列表数据转树型数据

前端将列表数据转树型数据 场景&#xff1a;后端返回列表数据&#xff0c;由前端根据业务需求完成树型数据转换&#xff0c; 常用于侧边导航菜单&#xff0c;下拉树型数据项等 export function listToTree(data: []) {var map: any {},tree: any []data.forEach((item: any…

每天五分钟计算机视觉:基于YOLO算法精确分类定位图片中的对象

滑动窗口的卷积的问题 滑动窗口的卷积实现效率很高,但是它依然不能够输出最精准的边界框,比如下面所示: 我们可以看到蓝色框不论在什么位置都不能很好的确定车的位置,有一个算法是YOLO 算法它能够帮助我们解决这个问题。 YOLO 算法 比如我们的输入图像是100*100,我们会…

【OceanBase诊断调优 】—— 如何快速定位SQL问题

作者简介&#xff1a; 花名&#xff1a;洪波&#xff0c;OceanBase 数据库解决方案架构师&#xff0c;目前负责 OceanBase 数据库在各大型互联网公司及企事业单位的落地与技术指导&#xff0c;曾就职于互联网大厂和金融科技公司&#xff0c;主导过多项数据库升级、迁移、国产化…

CSS的网页美化功能

<1>文字类 通常情况下&#xff0c;一般使用span对文字进行重点突出&#xff0c;用div来操作一段代码块。 字体的所有属性&#xff1a; 属性描述font在一个声明中设置所有的字体属性font-family指定文本的字体系列font-size指定文本的字体大小font-style指定文本的字体样…