当前位置: 首页 > news >正文

SpringBoot整合Spring WebFlux弃用自带的logback,使用log4j2,并启动异步日志处理

第一步:修改pom文件

      <!-- Spring Boot Starter WebFlux (排除默认日志) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId><version>${spring-boot.version}</version><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!-- 添加Log4j2 Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId><version>${spring-boot.version}</version></dependency>

第二不:pom添加关键依赖

<!-- 添加Log4j2核心依赖 --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>${log4j2.version}</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>${log4j2.version}</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>${log4j2.version}</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-jul</artifactId><version>${log4j2.version}</version></dependency>
<!-- 添加Log4j2版本属性 -->
<log4j2.version>2.17.2</log4j2.version>
<spring-boot.version>2.7.18</spring-boot.version>第三步:在resources文件夹下面新建log4j2.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30" name="log4j2"><Properties><!-- 日志保存路径 --><Property name="LOG_PATH">logs</Property><!-- 美化后的控制台日志模式 - 彩色日志 --><Property name="CONSOLE_LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level} [%-20.20t] %style{%logger{36}}{cyan} : %msg%n</Property><!-- 美化后的文件日志模式 --><Property name="FILE_LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%-20.20t] %-5level %logger{36} - %msg%n</Property></Properties><Appenders><!-- 彩色控制台输出 --><Console name="CONSOLE" target="SYSTEM_OUT"><PatternLayout pattern="${CONSOLE_LOG_PATTERN}" disableAnsi="false"/></Console><!-- DEBUG级别文件输出 --><RollingFile name="DEBUG_FILE" fileName="${LOG_PATH}/log_debug.log"filePattern="${LOG_PATH}/debug/log-debug-%d{yyyy-MM-dd}-%i.log"><PatternLayout pattern="${FILE_LOG_PATTERN}"/><Filters><ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/></Filters><Policies><TimeBasedTriggeringPolicy interval="1" modulate="true"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><DefaultRolloverStrategy max="15"/></RollingFile><!-- INFO级别文件输出 --><RollingFile name="INFO_FILE" fileName="${LOG_PATH}/log_info.log"filePattern="${LOG_PATH}/info/log-info-%d{yyyy-MM-dd}-%i.log"><PatternLayout pattern="${FILE_LOG_PATTERN}"/><Filters><ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/></Filters><Policies><TimeBasedTriggeringPolicy interval="1" modulate="true"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><DefaultRolloverStrategy max="15"/></RollingFile><!-- WARN级别文件输出 --><RollingFile name="WARN_FILE" fileName="${LOG_PATH}/log_warn.log"filePattern="${LOG_PATH}/warn/log-warn-%d{yyyy-MM-dd}-%i.log"><PatternLayout pattern="${FILE_LOG_PATTERN}"/><Filters><ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/></Filters><Policies><TimeBasedTriggeringPolicy interval="1" modulate="true"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><DefaultRolloverStrategy max="15"/></RollingFile><!-- ERROR级别文件输出 --><RollingFile name="ERROR_FILE" fileName="${LOG_PATH}/log_error.log"filePattern="${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}-%i.log"><PatternLayout pattern="${FILE_LOG_PATTERN}"/><Filters><ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/></Filters><Policies><TimeBasedTriggeringPolicy interval="1" modulate="true"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><DefaultRolloverStrategy max="15"/></RollingFile><!-- 异步Appender提高性能 --><Async name="ASYNC_DEBUG" bufferSize="1024"><AppenderRef ref="DEBUG_FILE"/></Async><Async name="ASYNC_INFO" bufferSize="1024"><AppenderRef ref="INFO_FILE"/></Async><Async name="ASYNC_WARN" bufferSize="1024"><AppenderRef ref="WARN_FILE"/></Async><Async name="ASYNC_ERROR" bufferSize="1024"><AppenderRef ref="ERROR_FILE"/></Async></Appenders><Loggers><!-- 项目特定包日志级别 --><Logger name="com.jdlt" level="debug" additivity="false"><AppenderRef ref="CONSOLE"/><AppenderRef ref="ASYNC_DEBUG"/><AppenderRef ref="ASYNC_INFO"/><AppenderRef ref="ASYNC_WARN"/><AppenderRef ref="ASYNC_ERROR"/></Logger><!-- 减少Spring框架的日志输出 --><Logger name="org.springframework" level="info"/><Logger name="org.apache" level="info"/><Logger name="reactor" level="info"/><Root level="info"><AppenderRef ref="CONSOLE"/><AppenderRef ref="ASYNC_DEBUG"/><AppenderRef ref="ASYNC_INFO"/><AppenderRef ref="ASYNC_WARN"/><AppenderRef ref="ASYNC_ERROR"/></Root></Loggers>
</Configuration>

http://www.dtcms.com/a/356202.html

相关文章:

  • Cesium 入门教程(十二):时间动画实例
  • undefined和null
  • MySQL數據庫開發教學(三) 子查詢、基礎SQL注入
  • Maven安装、IDEA集成Maven、依赖管理、单元测试
  • 《开发避坑指南:从异常中读懂系统的“求救信号”》
  • 自动化Reddit 效率已ready
  • 使用 Dify 和 LangBot 搭建飞书通信机器人
  • Webrtc支持FFMPEG硬解码之Intel
  • 2025五天申请邓白氏编码成功
  • Python 轻量级 HTML 解析器 - lxml入门教程
  • Java研学-SpringCloud(十)
  • Android14 init.qcom.usb.rc详解
  • 设计模式之状态机模式
  • hive udf函数实现在sql查询网站价格
  • Vue3 中的 v-model 语法糖
  • (Nginx)基于Nginx+PHP 驱动 Web 应用(上):配置文件与虚拟主机篇
  • 基于SQL大型数据库的智能问答系统优化
  • 安卓开发---SimpleAdapter
  • 不同卷积不同的滤波效果
  • 如何将OFD文件转换为PDF?总结在线OFD转PDF方法
  • QT5.14.2、CMake 扩展openCV
  • GPT-5原理
  • 第二章 Vue + Three.js 实现鼠标拖拽旋转 3D 立方体交互实践
  • Python- Visual Studio Code配置Anaconda
  • WebIDEPLOY 赋能数字校园建设:智慧管理系统的效能升级与实践路径 —— 以校园资源协同优化构建高效教育生态的探索
  • 洞悉核心,驭数而行:深入理解 Oracle SQL 优化器(RBO 与 CBO)的性能调优哲学
  • C# 一个投资跟踪程序的设计与实现:面向对象与设计模式的深度解析
  • ros、slam、激光雷达、自动驾驶相关学习内容和计划
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day15
  • PyTorch 机器学习基础(选择合适优化器)