spring boot 配置log4j2

2023-10-30

刚入职新公司,接到的第一个需求就是把项目的log4j 1.x 升级到2.x。之前没有做过日志配置,都是直接拿来用的,这是第一次自己配置日志文件,所以记录下相关知识点。

1、排除1.0的jar包

首先排查项目中log的版本,把1.0相关的版本都要排除掉(这里推荐一个idea的插件,Maven Helper 辅助我们分析jar的依赖关系,对于解决jar冲突有很大的帮助)

通过插件找到了log4j目前的版本1.2.17,我们选中右键跳转到jar包的依赖树,再一次选中右键点击Exclude,排除掉jar包。

2、引入2.0的jar包

这里我使用的是springboot 自带的log4j2的jar

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

 一般starter的版本号都会在当前项目使用的springboot的dependencies里面有默认版本配置

 如果说我们想自定义log4j2的版本号,我们可以在pom文件里面直接制定版本号

<log4j2.version>2.15.0</log4j2.version>

如下: 

这样我们就能发现我们项目引入的log4j2的版本都变成了2.15.0,这也是前些日子解决log4j漏洞最简单的办法

3、配置log4j2.xml

一般的log4j2.xml都在resources目录下面。如果想自己指定目录,需要在配置文件中使用logging.config:来指定目录

可以看下xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO" Strict="true" name="XMLConfigTest">
    <Properties>
        <Property name="filepath">../logs</Property>
        <Property name="log_pattern">%d{yyyy-MM-dd HH:mm:ss.SSS}  %X{logger_id} %5p %c{1}:%M:%L - %msg%n</Property>
        <Property name="log_count">14</Property>
    </Properties>
    <!-- 先定义所有的appender -->
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="${log_pattern}" />
        </Console>
        <RollingRandomAccessFile name="RollingRandomAccessFileInfo"
                                 fileName="${filepath}/info.log"
                                 filePattern="${filepath}/info.log.%d{yyyy-MM-dd}">
            <Filters>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认同一文件夹下最多保存7个文件-->
            <DefaultRolloverStrategy max="${log_count}"/>
        </RollingRandomAccessFile>
        <RollingRandomAccessFile name="RollingRandomAccessFileError"
                                 fileName="${filepath}/error.log"
                                 filePattern="${filepath}/error.log.%d{yyyy-MM-dd}">
            <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认同一文件夹下最多保存7个文件-->
            <DefaultRolloverStrategy max="${log_count}"/>
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>
        <AsyncRoot level="INFO" includeLocation="true" additivity="false">
            <AppenderRef ref="Console" />
            <AppenderRef ref="RollingRandomAccessFileInfo" />
            <AppenderRef ref="RollingRandomAccessFileError" />
        </AsyncRoot>
    </Loggers>
</Configuration>

 4、xml配置项解析

1. monitorInterval,配置的为120,单位为秒。即在服务运行过程中发生了log4j2配置文件的修改,log4j2能够在monitorInterval时间范围重新加载配置,无需重启应用。

2. property配置文件全局属性的声明,使用方式为:${声明的属性名称}。

3. RollingRandomAccessFile基本属性

    name:Appender名称

    immediateFlush:log4j2接收到日志事件时,是否立即将日志刷到磁盘。默认为true。

    fileName:日志存储路径

    filePattern:历史日志封存路径。其中%d{yyyyMMddHH}表示了封存历史日志的时间单位(目前单位为小时,yyyy表示年,MM表示月,dd表示天,HH表示小时,mm表示分钟,ss表示秒,SS表示毫秒)

4. TimeBasedTriggeringPolicy

interval:表示历史日志封存间隔时间,单位为filePattern设置的单位值

5. ThresholdFilter

     level,表示最低接受的日志级别,博客配置的为INFO,打印INFO级别以上的日志。

       

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring boot 配置log4j2 的相关文章

随机推荐

  • 利用Dialogflow构建聊天机器人

    作者 Priyanka Vergadia Developer Advocate Google Anu Srivastava Developer Advocate AI ML 在如今的办公环境下 在线协同工作至关重要 保持生产力也是关键 聊天
  • 用Python自动化操作PPT,看完这篇文章就够了!

    作者 超级大洋葱806 https tangxing blog csdn net article details 109568830 大家好 我是小z 今天给大家分享一波Python自动化操作PPT的干货 1 PPT自动化能干什么 有什么优
  • django 项目中脚本启动

    django项目中的脚本如何快速方便启动 如上如 创建文件script放置脚本项目文件 在manage py同目录下创建run script py文件启动脚本 run script py代码 coding utf 8 import os i
  • ==与equals有什么区别

    与equals的区别 相同点 1 和equals都是用于完成比较操作 2 和equals的判定结果都是boolean值 true或false 不同点 1 是个运算符 本质上用于比较两个值是否相等 2 使用 运算符比较的值可以是基本类型的值
  • 在ubuntu20.4下安装ROS-noetic(全步骤经反复验证成功)

    注意 如果有conda环境 conda deactivate推出环境 1 4步骤都是很顺利的 如果下载失败请换源 第5步rosdep比较繁琐 但是根据我的使用情况 发现不按照rosdep也能正常使用 更新于2022 3 安装过程的打印信息可
  • 【图像处理】《数字图像处理-冈萨雷斯》笔记

    数字图像处理 冈萨雷斯 笔记 第一章 绪论 图像处理实例 伽马射线成像 X射线成像 紫外波段成像 可见光以及红外线成像 微波波段成像 无线电波成像 声波成像 图像处理的基本步骤 图像获取 滤波与增强 图像复原 彩色图像处理 小波与分辨率处理
  • JMeter 安装教程(详细安装教程)

    JMeter 安装教程 详细安装教程 一 jdk下载 注意 因为jmeter运行依赖jdk环境 所以在安装jmeter之前需要安装jdk且配置环境变量 需要jdk1 8以上版本 1 jdk下载地址 http www oracle com t
  • Vue实现下载及文件重命名

    效果如下 实现步骤 html
  • 理解JavaScript作用域和作用域链

    一 JavaScript中的作用域 作用域是当前的执行上下文 值和表达式在其中 可见 或可被访问 如果一个变量或表达式不在当前的作用域中 那么它是不可用的 function foo var x sfa console log x x is
  • 31黑马QT笔记之QPixmap、QImage、QPicture功能大总结

    31黑马QT笔记之QPixmap QImage QPicture功能大总结 QPixmap QImage既可以用于绘图 又可以作绘图设备时保存图片 而QPicture只能用于作绘图设备时保存图片状态 保存前需要用到前两种方法绘图 要显示必须
  • Go Lang 从Request中解析文件和参数

    如果要处理上传的文件 就必须使用multipart form data编码 处理multipart form data编码的请求时 解析使用ParseMultipartForm 之后从MultipartForm字段取值 前端上传代码
  • powershell 学习笔记

    命令模式 字符串不需要加引号 除变量和圆括号中的内容外的所有内容均可看作字符串 copy users txt accounts txt copy src dest write host 2 2 表达式模式 以最高级别语言分析方法来进行分析
  • 高通平台MSM8916LCM模块移植(一)-bootloader部分

    目录 LK中LCM启动流程 oem panel select mdss dsi initialize read panel id 此次移植打算分成两个模块来说 bootloader部分和kernel部分 在实际的移植调试过程中也是这么分成了
  • C语言期末复习编程练习之百钱百鸡问题

    古代数学家张丘建在 算经 一书中提出的数学问题 鸡翁一值钱五 鸡母一值钱三 鸡雏三值钱一 百钱买百鸡 问鸡翁 鸡母 鸡雏各几何 创作此系列的原因也是为了复习期末考试 各位见谅哦 include
  • 近7000万美元被盗:Curve被攻击事件分析

    7 月 31 日 以太坊编程语言Vyper发布公告称 Vyper 0 2 15 0 2 16 和 0 3 0 版本的递归锁失效 随后Curve Finance等相关协议出现了漏洞攻击事件 漏洞的根源都是某些版本的 Vyper 中出现故障的递
  • python发送邮件zmail库

    第三方库 zmail 和 yagmail 可实现邮件发送 在实际使用对比zmail比yagmail更简洁 使用zmail 无需登录OA邮箱 便可完成邮件的发送及附件的自动加载 import zmail def send zmail send
  • JupyterHub on Kubernetes部署

    理论是灰色的 实践之树长青 恩格斯 近日在做毕设项目 涉及到在K8s和swarm基础上部署JupyterHub 经过两天时间的学习和部署 N次的失败尝试 最终在服务器上成功部署了JupyterHub 实验依赖 阿里云服务器2核4G ubun
  • SpringBoot项目的创建和jar、war方式的部署

    一 创建项目 项目开发用的是IDEA java版本为1 8 Tomcat版本为9 0 8 新建项目 选择Spring Initializr 下一步 填写group和artifact信息 下一步 选择Web中的Web 下一步 选择存放路径 例
  • git部署出现的问题

    git部署出现的问题 error remote origin already exists remote rejected master master hook declined 一 出错信息 fatal remote origin alr
  • spring boot 配置log4j2

    刚入职新公司 接到的第一个需求就是把项目的log4j 1 x 升级到2 x 之前没有做过日志配置 都是直接拿来用的 这是第一次自己配置日志文件 所以记录下相关知识点 1 排除1 0的jar包 首先排查项目中log的版本 把1 0相关的版本都