【Spring】SpringBoot 配置 log4j2 日志

news2024/11/24 11:52:39

1. 概述

Apache Log4j2 是对原先的 Log4j 项目的升级版本,参考了 logback 的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升。

 

2. 案例与解析

2.1 引入依赖

SpringBoot 的 starter 自带的是 logback 日志,若要使用 log4j2 日志,需要引入对应依赖。

logback 日志和 log4j2 日志都是对 slf4j 门面的实现,只能存在一个,且必须存在一个,不存在或者存在多个都会出错。如果两者都存在就会出现以下的问题:

因此,在使用 log4j2 日志时,必须要在依赖中把 logback 给 exclude 掉。 并且,使用 log4j2 日志还需要适配器 **log4j-slf4j-impl**,它跟 SpringBoot 的 starter 自带的 **log4j-to-slf4j** 是相互冲突的,因此还需要将 **log4j-to-slf4j** 也 exclude 掉。

 
因为 SpringBoot 的 starter 中已经带有 slf4j 门面了,因此无需再引入 slf4j 依赖。

<!-- 使用 log4j2 的适配器进行绑定 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.19.0</version>
</dependency>

<!-- log4j2 日志门面 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.19.0</version>
</dependency>

<!-- log4j2 日志实面 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.19.0</version>
</dependency>

 

2.2 定义日志文件 log4j2.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration status="warn" monitorInterval="5">
    <properties>
        <property name="LOG_HOME" value="logs"/>
    </properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] [%-5level] %c{36}:%L --- %m%n"/>
        </Console>

        <File name="File" fileName="${LOG_HOME}/file-log4j2.log">
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5level] %l %c{36} - %m%n"/>
        </File>

        <RandomAccessFile name="AccessFile" fileName="${LOG_HOME}/myAcclog.log">
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5level] %l %c{36} - %m%n"/>
        </RandomAccessFile>

        <RollingFile name="RollingFile" fileName="${LOG_HOME}/log4j2.log"
                     filePattern="logs/log4j2.%d{yyyy-MM-dd-HH-mm}.%i.log">
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5level] %l %c{36} - %msg%n"/>
            <Policies>
                <OnStartupTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="5 KB"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy max="30"/>
        </RollingFile>

    </Appenders>

    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="FILE"/>
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</configuration>

2.3 在 SpringBoot 项目的配置文件中配置

在 SpringBoot 的 application.properties (或者ymal格式的application.yaml) 中指明日志配置文件

# log4j2
logging.config=classpath:log4j2.xml

 

2.4 日志配置解析

 

3. 测试

3.1 控制台输出的日志

 

3.2 日志文件中输出的日志

 

参考文献

[1] https://tanzhang.blog.csdn.net/article/details/110723441

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

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

相关文章

数据结构Data Structure和算法Algorithm导航目录(持续更新)

文章目录1. 大纲2. 算法基础3. 数据结构3.1 线性结构3.1.1 字符串3.1.2 线性表3.1.3 Hash表3.1.4 栈3.1.5 队列3.1.6 位图3.2 逻辑结构3.2.1 树3.2.1.1 二叉树3.2.1.2 动态查找树3.2.1.3 多路查找树3.2.2 图3.2.4 堆4. 算法4.1 排序4.2 查找5. 领域算法6. 优秀算法赏析1. 大纲 …

STM32F4 | 按键输入实验

文章目录一、STM32F4 IO 口简介二、硬件设计三、软件设计四、实验现象五、STM32CubeMX 配置 IO 口输出这一章&#xff0c;我们将通过 ALIENTEK阿波罗 STM32 开发板上载有的 4 个按钮&#xff08; KEY_UP、 KEY0、 KEY1 和 KEY2&#xff09;&#xff0c;来控制板上的 2 个 L…

成功的项目管理需要做好哪些方面?

每一个项目都代表了为公司建立同行竞争优势和提高利润的方式&#xff0c;成功交付的项目会将公司与那些竞争激烈的公司区分开来。而项目的成功取决于不同的因素。这也是项目经理所需要关注的问题&#xff0c;在每一个项目成功标准方面保持一致可以消除项目失败的风险&#xff0…

【数据库课程设计】SQLServer数据库课程设计(学生宿舍管理),课设报告+源码+数据库关系图

数据库课程设计——学生宿舍管理&#xff0c;需要全部源码可以关注私信我&#xff0c;把邮箱发在评论区前言一、课题背景和开发环境1、课题背景2、开发环境二、系统功能及示意图1、系统实现功能2、功能示意图2.1学生模块2.2管理人员模块三、概念结构设计1、管理员分配宿舍E_R图…

传染病模型3

一、研究方向 建立传染病的数学模型描述传染病的传播过程 分析感染人数的变化规律&#xff0c;预测传染病高峰的到来 探索控制、根除、预防传染病传播蔓延的手段 二、舱室 流行病学中的一大类模型&#xff0c;称为“舱室”模型&#xff0c;它是将人群分成若干个“舱室…

为什么机器码、汇编不可移植,而C语言可以移植?

1、机器码不可移植的原因 机器码&#xff08;二进制&#xff09;是处理器能直接识别的语言&#xff0c;不同的机器码代表不同的运算指令&#xff0c;处理器可以识别哪些机器码是由处理器的硬件设备决定的&#xff0c;不同的处理器机器码可能不同。 比如在ARM处理器上加法可能…

Linux 线程池

文章目录线程池的定义使用线程池的原因基于POSIX实现的线程池基于block队列的线程池实现基于ring队列的线程池实现设计单例模式线程池线程池的定义 线程池就一堆已经创建好的任务线程&#xff0c;初始它们都处于空闲等待状态&#xff0c;当有新的任务需要处理的时候&#xff0…

大话设计模型 Task01:设计原则

目录1. 单一职责原则&#xff08;SRP&#xff09;使用动机如何使用2. 开闭原则&#xff08;OCP&#xff09;使用动机如何使用使用原则3. 依赖倒置原则&#xff08;DIP&#xff09;使用动机使用原则4. 里氏替换原则&#xff08;LSP&#xff09;使用动机5. 迪米特法则&#xff08…

12、MInio文件系统的使用小记一

前言&#xff1a;文档存储从最初的文本文档发展到现在的图片视频存储&#xff0c;存储容器也从数据库演变成了文件系统&#xff0c;目前市面上提供云存储的公司很多&#xff0c;百度腾讯阿里华为等&#xff0c;这些公司都有成熟的文件存储方案及restapi接口&#xff0c;很方便&…

Docker-网络配置

目录 一&#xff0c;网络模式 1.bridge模式&#xff08;默认模式&#xff09; 2.host模式 二&#xff0c;bridge模式 三&#xff0c;host模式 网络模式与数据卷容器挂载的操作 三&#xff0c;如何创建自定义网络 一&#xff0c;网络模式 Docker在创建容器时有四种网络模式…

Sulfo CY5-马来酰亚胺|Cyanine5 MAL菁染料CY5标记

Sulfo CY5-马来酰亚胺|Cyanine5 MAL菁染料CY5标记 Cyanine5 maleimide是单一活性染料&#xff0c;有选择性的与硫醇基团&#xff08;比如蛋白和多肽的半胱氨酸&#xff09;结合以进行标记。我们使用水溶的Sulfo-Cyanine5 maleimide标记抗体和其他敏感蛋白。Cyanine5是Cy5的类似…

web前端设计与开发期末作品_期末大作业【使用HTML制作汽车首页】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

校园二手商品交易平台的设计与实现(J2EE)

目 录 摘要 I Abstract II 目录 III 1 绪论 1 1.1 课题研究背景及意义 1 1.2 本课题主要工作 1 2 系统相关技术 3 2.1 J2EE技术 3 2.2 MVC模式 4 2.3 B/S结构 4 2.4 数据库技术 4 3 系统需求分析 6 3.1 用户功能需求 6 3.2 系统可行性分析 6 3.2.1 技术可行性 6 3.2.2 经济可行…

Qt扫盲-QComboBox理论总结

QComboBox理论总结1. 简述2. 显示内容3. 信号4. 常用功能5. model/view 使用1. 简述 QComboBox 提供了一种以占用最小屏幕空间的方式向用户显示选项列表的方法。QCombox是显示当前项目的选择小部件&#xff0c;可以弹出可选项目的列表。QComBox其实就是一个下拉列表。选择的项…

做短视频开直播要不要买流量?

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 做短视频要不要买流量&#xff0c;开直播要不要买流量&#xff0c;买了流量以后是不是就要一直买&#xff0c;不买就没有免费流量了? 在这儿给大家普及一下这件事&#xff1a; 在买流量之前呢&…

一种多臂PEG衍生物——8-Arm peg-Biotin,8-Arm PEG-Biotin,八臂PEG生物素

英文名称&#xff1a;8-Arm peg-Biotin 中文名称&#xff1a;八臂-聚乙二醇-生物素 8臂PEG生物素是一种多臂PEG衍生物&#xff0c;在连接到一个六甘油核心的八个臂的每个末端具有生物素基团。PEG生物素可通过与链霉亲和素和抗生物素结合进行聚乙二醇化&#xff0c;具有高亲和…

python语言Django框架搭建学生信息管理系统

1.系统介绍 本系统是基于Django 2.2.3开发的,面向学生信息管理系统。 系统以学生个体为核心向外拓展诸如宿舍、班级、学生组织等一系列组,诸如请假、签到、通知发布等一系列应用。 计划内实现功能有:班级、学生、宿舍三大项为基础的信息管理系统,早检、晨跑、卫检及相应…

ASFormer:Transformer for Action Segmentation论文阅读笔记

摘要 为了解决动作分割类问题&#xff0c;作者设计了一个高效的基于transformer的动作分割任务模型&#xff0c;ASFormer&#xff0c;该模型具有以下三个特征&#xff1a; &#xff08;i&#xff09;由于特征的高局部性&#xff0c;作者明确地引入了局部连通性归纳先验。它将假…

经典文献阅读之--Swin Transformer

0. 简介 Transfomer最近几年已经霸榜了各个领域&#xff0c;之前我们在《经典文献阅读之–Deformable DETR》这篇博客中对DETR这个系列进行了梳理&#xff0c;但是想着既然写了图像处理领域的方法介绍&#xff0c;正好也按照这个顺序来对另一个非常著名的Swin Transformer框架…

Qt-Web混合开发-QWebEnginePage权限管理(3)

Qt-Web混合开发-使用QWebEnginePage打开摄像头演示权限管理&#x1f3f3;️‍&#x1f308; 文章目录Qt-Web混合开发-使用QWebEnginePage打开摄像头演示权限管理&#x1f3f3;️‍&#x1f308;1、概述&#x1f6a9;2、实现效果&#x1f97d;3、实现功能&#x1f50a;4、关键代…