Spring Boot使用log4j2管理日志

SpringBoot如何优雅实现远程调用 RestTemplate+HttpClient+feign远程调用方式简单总结。 其中包括spring boot实现远程调用的几种方式、Cloud+Consul+Feign实现远程调用、feign远程调用熔断降级等干货 阅读详情

1 参考网站

# 开发文档
https://github.com/apache/logging-log4j2

# xml配置文档
https://logging.apache.org/log4j/2.x/manual/appenders.html

2 工程布局

在这里插入图片描述

3 log4j2配置

log4j2.xml文件,此文件不需要在application.yml文件中配置。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="60">
    <Properties>
        <!-- 设置应用的英文名称 -->
        <Property name="App">mylog</Property>
        <!-- 设置日志目录 -->
        <Property name="logDir">mylog/logs</Property>
        <Property name="splitSize">10 MB</Property>
        <property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level  %msg \t %logger{36} %F %M %L %n </property>
    </Properties>

    <Appenders>
        <!-- 输出控制台日志的配置 -->
        <Console name="console" target="SYSTEM_OUT">
            <!-- 记录info和warn级别信息 -->
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <!-- 输出日志的格式 -->
            <PatternLayout pattern="${pattern}"/>
        </Console>

        <!-- 打印出所有的信息 -->
        <RollingFile name="info"
                     fileName="${logDir}/${App}-info.log"
                     filePattern="${logDir}/${App}-info-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout pattern="${pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="${splitSize}"/>
            </Policies>
            <Filters>
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>

        <!-- 存储所有error信息 -->
        <RollingFile name="error"
                     fileName="${logDir}/${App}-error.log"
                     filePattern="${logDir}/${App}-error-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout pattern="${pattern}" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="${splitSize}"/>
            </Policies>
            <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="info">
            <AppenderRef ref="console"/>
            <AppenderRef ref="info"/>
            <AppenderRef ref="error"/>
        </Root>
    </Loggers>
</Configuration>

4 pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>mylog</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>mylog</name>
	<description>Mylog project for Spring Boot</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!-- Init the entity -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.20</version>
			<scope>provided</scope>
		</dependency>

		<!-- Import the log4j2 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-log4j2</artifactId>
		</dependency>

		<!-- Remove the internal dependency log spring-boot-starter-logging  -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-logging</artifactId>
			<exclusions>
				<exclusion>
					<groupId>*</groupId>
					<artifactId>*</artifactId>
				</exclusion>
			</exclusions>
		</dependency>


		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.1.RELEASE</version>
			</plugin>
		</plugins>
	</build>

</project>

5 SpringBoot使用Log4j2

5.1 使用LoggerFactory采集日志

TestLogController.java。

package com.example.mylog.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/log")
@ResponseBody
public class TestLogController {

    @GetMapping("/test")
    public String test(){

        Logger logger = LoggerFactory.getLogger(TestLogController.class);

        logger.trace("trace level");
        logger.debug("debug level");
        logger.info("info level");
        logger.warn("warn level");
        logger.error("error level");

        return "1";
    }

}

5.2 使用lombok采集日志

TestLogLombokController.java

package com.example.mylog.controller;

import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/lomlog")
@ResponseBody
@Log4j2
public class TestLogLombokController {

    @GetMapping("/test")
    public String test(){

        log.trace("Lombok trace level");
        log.debug("Lombok debug level");
        log.info("Lombok info level");
        log.warn("Lombok warn level");
        log.error("Lombok error level");

        return "1";
    }
}
Spring Boot中日志管理与监控:集成Logback、Log4j2与Spring Boot日志机制! 🏆本文收录于《滚雪球学Spring Boot》,专门攻坚指数提升,2025 年国内最系统+最强(更新中)。    本专栏致力打造最硬核 Spring Boot 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。 阅读详情

相关推荐

深入解析:Spring Boot中使用Log4j2进行日志管理

通过本文的介绍,你应该能够理解如何在Spring Boot应用中集成Log4j2,并使用SLF4J API进行日志记录。这种配置不仅提供了灵活的日志管理,还允许我们通过简单的配置来自定义日志的输出格式。

m0_62153576的博客 727

springboot使用log4j2

问题: 为什么要使用log4j2作为我们的日志记录管理框架呢? 答: springboot默认使用logback作为日志记录框架,常见的日志记录框架有log4j、logback、log4j2。 我们在项目中经常使用一个叫SLF4J的依赖,它是做什么的呢? slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,它的接口并不能独立使用,需要和具体的日志框架实现配合使用(如log4j、logback、log4j2)。 所有我们常把slf4j称之为“门面”,因为它只是个标准,

我的青春一去不复返 1万+

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

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

喵手的博客 2676

【Spring】SpringBoot 配置 log4j2 日志

log4j2

qq_27198345的博客 9959

Spring Boot集成Log4j2实现日志管理完整示例

在企业级Java应用开发中,日志是系统调试、运行监控与故障排查的核心工具。Spring Boot作为主流的微服务框架,内置了灵活的日志管理机制,支持多种日志框架的集成与切换。本章将从日志的基本作用入手,介绍日志在系统运维中的价值,进而分析Spring Boot默认使用的Logback日志框架,并对比Log4j、Log4j2等主流实现。通过本章学习,读者将理解为何在性能与功能方面,Log4j2逐渐成为企业级应用的首选日志框架,为后续章节的配置与优化打下坚实基础。

weixin_28681379的博客 802

SpringBoot WebService cxf接口发布以及logbok日志集成

SpringBoot WebService cxf接口发布以及logbok日志集成, 希望对学习的小伙伴们有帮助

springboot 日志管理之 log4j2

log4j2 日志框架详解,一文让你轻松学会 log4j2 的使用。

m0_52542073的博客 6029

手机Camera硬件电路设计:从电源管理到信号完整性的实战解析

本文深入解析了手机Camera硬件电路设计的核心挑战与实战经验,重点聚焦于电源管理与信号完整性两大基石。文章详细阐述了AVDD、DVDD、IOVDD和AFVDD四路电源的差异化设计要点与噪声控制策略,并剖析了MIPI等高速信号通道的完整性设计原则,为硬件工程师提供了从理论到PCB布局布线的完整实战指南。

weixin_28308325的博客 250

Spring Boot 3 + Log4j2 实战:高性能用户管理系统与结构化日志架构解析

深入讲解如何在 Spring Boot 3.2.0 中集成 Log4j2 实现高性能、结构化的日志管理。内容涵盖异步日志、JSON 输出、敏感信息过滤、审计日志标记(Marker)、线程上下文(ThreadContext)等高级特性,并提供了完整的代码实现、配置示例(XML + Properties 双版本)与测试方法。

肖哥弹架构博客 1208

瑞萨RH850/U2A8以太网模块mcal说明

如下所有功能的支持需要在达芬奇中开启EthGlobalTimeSupport。秒[32bit], 纳秒[32bit], 纳秒小数[20bit]每一帧发送数据的相关结构缓冲区都放在变量。每一帧接收数据的相关结构缓冲区都放在变量。

至道无难,唯嫌拣择。 1861

虚拟机Ubuntu连接USRP

笔记本通过网线连接USRP。

xiaozir的博客 2307

SPRING BOOT 异步日志管理 log4j2

异步日志操作 <?xml version="1.0" encoding="UTF-8"?> <Configuration status="warn"> <Appenders> <RollingFile name="MyFile" fileName="logs/app.log"> <PatternLayout>...

IOS_Mainstay的博客 279

Delta并联机械手-Codesys实现以及正解逆解研究

由于Codesys的Robotics模块有Delta并联机械手的运动模型,因此借助Codesys的机械手运动模型,研究自己的正解逆解算法。

weixin_42386991的博客 5566

spring boot log4j 对比 log4j2 日志框架管理

测试:同步情况下 结果如下: log4j 测试打印 100000次 平均值在 17秒~18秒左右。 log4j2 测试打印 100000次 平均值在 15秒左右。 异步处理模式: 所有日志均为异步执行。 使用方式: pom.xml 配置方式: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-

zhanglinlang的专栏 449

Windows 镜像包大全(附百度云下载链接)

插入U盘,找到下载好的两个驱动软件,并安装,先打开驱动人生万能网卡版,安装好网卡驱动,可以接入wifi或者网线了,然后打开驱动精灵,按照提示,安装所有的驱动(中间要是让你重启,就先选择稍后再说,如果有的驱动安装好之后非要你重启,关不掉的那种,那你就重启吧),等全部安装好了,重启电脑。如果你有显卡,这里以英伟达举例,我是GTX960的,当你的驱动都安装好后,右键桌面,会出现一个英伟达控制面板。安装软碟通,下载之后,一直下一步就ok,啥也不用配置,到了最后一项点击“继续试用”即可。(下载里面的网卡版即可),

悦分享 7360

RK356x U-Boot研究所(命令篇)3.10 bidram与sysmem相关命令的作用

RK356x U-Boot研究所(命令篇)3.10 bidram与sysmem相关命令的作用

Systemcall名屋 624

Spring Boot 整合 log4j2 实现日志管理

摘要:上一篇,我们讲了Spring Boot 整合 log4j实现日志管理,这一篇接着说一下Spring Boot 整合 log4j2,。 一:还是新建一个java工程: 二:增加log4j2的pom.xml配置,如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w

https://gitee.com/micai-code 1万+

【GlobalMapper精品教程】074:从Lidar点云创建3D地形模型

本文基于地形点云数据,基于泊松方法、贪婪三角形测量方法和阿尔法形状创建3d地形模型。

智慧空间实验室 2169

Spring Boot整合Log4j2实现高性能日志管理

日志系统是Java应用开发中的核心组件,直接影响系统可维护性和问题排查效率。Log4j2作为新一代日志框架,采用异步日志和LMAX Disruptor技术,在高并发场景下性能显著优于Logback。通过灵活的Appender配置和热更新机制,开发者可以实现日志分级存储、敏感信息脱敏等高级功能。在Spring Boot项目中集成Log4j2需要排除默认Logback依赖,并配置log4j2.xml文件定义日志格式、滚动策略和级别控制。合理的日志配置方案能提升40%以上的日志处理效率,特别适合中大型分布式系统。

weixin_29698641的博客 263

华为OD机试双机位C卷:完美走位 (C++/C/Py/Java/Js/GO)

华为OD机试双机位C卷 完美走位, 提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机考 完美走位, 华为OD机试 完美走位。

qq_45776114的博客 1724

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

Preface 原文链接: http://yangbingdong.com/2018/spring-boot-docker-elk/ 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维上的额外复杂性,尤其是在服务部署和服务监控上。单体应用是集中式的,就一个单体跑在一起,部署和管理的时候非常简单,而微服务是一个网状分布的,有很多服务需要维护和管理,对它进行部署和...

MasterAnt_D的博客 4987

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

spring Boot 整合 slf4j+log4j2 实现日志管理

【代码】spring Boot 整合 slf4j+log4j2 实现日志管理。

Leng丶的博客 975

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【日志】springboot整合log4j2以及log4j2.xml的模板

1、pom文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> </parent> <dependency>

李光 未来科技 1180

Spring-boot2使用log4j2将日志写入数据库

1.导入依赖 Spring-boot2 中Starters包含log4j2,所以进入log4j2只要引入以下依赖性进入pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-st...

sajdkla的博客 4176

Spring Boot系列(二)使用log4j2进行日志管理

上篇博客讲了如何创建一个springboot的应用以及application.yml的一些简单配置,若有不清楚的小伙伴请移步Spring Boot系列(一)初识SpringBoot 本篇博客就来讲讲springboot如何使用log4j2进行日志管理,springboot应用默认的日志记录组件是logback,然而我之前一直都是使用log4j来记录日志的,对于logback我实在是用不来,所以打算...

ZF_9420的博客 1294
上一篇: SpringBoot连接redis
下一篇: SpringSecurity前后端分离的使用
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值