springboot整合log4j2的案例代码2

server/2024/12/29 7:38:18/

一   springboot项目

1.1 springboot项目使用logback默认日志

1.项目启动后,打印日志

二  springboot项目集成log4j2

2.1 引入依赖

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

2.2 排除依赖

springboot默认使用Logback日志框架来记录日志,并用INFO级别输出到控制台,所以我们要先排除它的依赖

<!--spring boot的启动类 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>

2.3添加log4j2配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<!--  %d{HH:mm:ss.SSS}  毫秒的时间%p代表输出该条日志的等级%t  当前线程名称%-5level  日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0%c{1}  类名%L 输出行号%msg 日志文本%n 换行其他常用的占位符有:%F 输出所在的类文件名,如Client.java%M 输出所在方法名%m是输出代码指定的日志信息%l  输出语句所在的行数, 包括类名、方法名、文件名、行数 (这个比较强大)  -->
<configuration status="WARN" monitorInterval="30"><!--先定义所有的appender--><appenders><!--这个输出控制台的配置--><console name="Console" target="SYSTEM_OUT"><!--输出日志的格式--><PatternLayout pattern="%clr{[%d{HH:mm:ss:SSS}]}{green} [%p] [%t] - %c{5} - %m%clr{%throwable{short.methodName}}{red}%n"/><ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/><!--        <PatternLayout pattern="%clr{[%d{HH:mm:ss:SSS}]}{green} [%p] [%t] - %l- %m%clr{%throwable}{red}%n"/>-->
<!--      <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %style{%L}{red} %M - %msg%style{%throwable}{red}%n"  disableAnsi="false" noConsoleNoAnsi="false"/>--></console><!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用--><File name="log" fileName="E:/log4j2/test.log" append="false"><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] [%t] - %l - %m%n"/></File><!--INFO日志文件输出 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileInfo" fileName="E:/log4j2/info.log"filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile><!-- Warn日志文件输出 --><RollingFile name="RollingFileWarn" fileName="E:/log4j2/warn.log"filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="100 MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --><DefaultRolloverStrategy max="20"/></RollingFile><!-- Error日志文件输出 --><!--<RollingFile name="RollingFileError" fileName="E:/logs/error.log"--><!--filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">--><!--<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>--><!--<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>--><!--<Policies>--><!--<TimeBasedTriggeringPolicy/>--><!--<SizeBasedTriggeringPolicy size="100 MB"/>--><!--</Policies>--><!--</RollingFile>--></appenders><!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--><loggers><!--节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等--><!--<logger name="org.springframework" level="INFO"></logger>--><!--<logger name="org.mybatis" level="INFO"></logger>-->
<!--        <root level="INFO">-->
<!--            <appender-ref ref="Console"/>-->
<!--            <appender-ref ref="log"/>-->
<!--            <appender-ref ref="RollingFileInfo"/>-->
<!--            <appender-ref ref="RollingFileWarn"/>-->
<!--            &lt;!&ndash;<appender-ref ref="RollingFileError"/>&ndash;&gt;-->
<!--        </root>--><AsyncRoot level="INFO"  includeLocation="true" ><AppenderRef ref="Console"/></AsyncRoot></loggers>
</configuration>

2.4 在application配置文件中添加log4j2配置文件

需要在application.properties文件中添加配置 

2.5 异步配置

1.添加依赖

<dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>3.4.4</version>
</dependency>

2.配置

# ??????????
log4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector

2.6 启动验证

springboot 集成Log4j2_springboot集成log4j2-CSDN博客

https://www.zhihu.com/tardis/bd/art/244943401?source_id=1001

SpringBoot整合Log4j2日志框架 - Evan1024 - 博客园

springboot集成log4j2日志 - theSummerDay - 博客园

https://mp.weixin.qq.com/s/sLo_yMwTxzp52TLBKtdkqA

1.控制台输出

2.不同文件输出

3.输出语句: 使用门面层slf4j

 


http://www.ppmy.cn/server/154138.html

相关文章

期末算法分析理论复习题

目录 8-1 计算题-时间复杂度分析 8-2 动态规划法与贪心法的异同 8-3 矩阵连乘 8-4 最大子数组和 8-5 旅行商问题 8-6 算法设计题-0-1背包问题 8-7 算法设计题-活动安排 8-8 算法设计题-找零钱问题 以下答案仅代表个人想法&#xff0c;仅供参考 8-1 计算题-时间复杂度分析 已知…

【ETCD】【实操篇(十六)】基于角色的访问控制:ETCD 安全管理指南

ETCD是一个高可用的分布式键值存储系统&#xff0c;广泛应用于Kubernetes等大规模容器化平台的配置和服务发现。为了保障ETCD集群中的数据安全&#xff0c;ETCD提供了基于角色的访问控制&#xff08;RBAC&#xff09;功能。本文将详细介绍如何在ETCD v3中配置和管理基于角色的访…

RK356x bsp 7 - PCF8563 RTC调试记录

文章目录 1、环境介绍2、目标3、PCF85634、dts配置5、内核配置6、测试验证 1、环境介绍 硬件&#xff1a;飞凌ok3568-c开发板 软件&#xff1a;原厂rk356x sdk 2、目标 开发板断电后仍正常计时。 3、PCF8563 PCF8563 是由 NXP Semiconductors 公司生产的低功耗 CMOS 实时…

ChatGPT之父:奥尔特曼

奥尔特曼 阿尔特曼一般指萨姆奥尔特曼,他是OpenAI的联合创始人兼首席执行官,被称为“ChatGPT之父”.以下是其具体介绍: 个人经历 1985年4月22日出生于美国芝加哥,8岁学会编程,9岁拥有电脑,对信息技术和互联网产生兴趣.高中就读于约翰巴勒斯中学,后进入斯坦福大学主修计…

STM32 + 移远EC800 4G通信模块数传

一、4G模块简述 EC800M-CN 是移远通信&#xff08;Quectel&#xff09;推出的一款高性能、超小尺寸的 LTE Cat 1 无线通信模块&#xff0c;专为 M2M&#xff08;机器对机器&#xff09;和 IoT&#xff08;物联网&#xff09;应用设计。它具有以下主要特点&#xff1a; 通信速率…

nodejs创建ws服务器,前端浏览器用websocket接收信息和发送信息给服务端

首页是用nodejs建立服务器端 //wsserver.js const WebSocketrequire(ws); const wssnew WebSocket.Server({port:8080}); wss.on(connection,function connection(ws){ws.on(error,console.error);//接收客户端发送过来的信息ws.on(message,function message(data){console.lo…

python安装

python安装 1.下载2.安装3.验证安装成功 1.下载 &#xff08;1&#xff09;下载网址&#xff1a;https://www.python.org/downloads/windows/ 进入后稍等一会&#xff0c;比较慢 &#xff08;2&#xff09;选择版本 2.安装 &#xff08;1&#xff09;双击或者以管理员身份运…

Mask R-CNN

目录 摘要 Abstract Mask R-CNN 网络架构 Backbone RPN Proposal Layer ROIAlign bbox检测 Mask分割 损失计算 实验复现 总结 摘要 Mask R-CNN是在Faster R-CNN的基础上进行改进的目标检测和实例分割网络。Faster R-CNN主要用于目标检测&#xff0c;输出对象的边…