当前位置: 首页 > 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.xdnf.cn/news/1386685.html

相关文章:

  • Python计算点云的均值、方差、标准差、凸点(顶点)、质心和去中心化
  • Docker03-知识点整理
  • Go Vendor 和 Go Modules:管理和扩展依赖的最佳实践
  • 项目一系列-第9章 集成AI千帆大模型
  • C/C++---预定义常量
  • iCloud 备份与 iTunes 备份:有何不同
  • Jenkins Pipeline(二)-设置Docker Agent
  • Python中的匿名函数详解(lambda)
  • 无人机固件升级与技术要点解析
  • 命令行操作:逻辑运算符、重定向与管道
  • Cesium 入门教程(十二):时间动画实例
  • AI共链·智存未来 | 绿算技术受邀出席华为AI SSD发布会
  • 预测模型及超参数:3.集成学习:[1]LightGBM
  • TDengine 3.3.7.0 新增性能基准工具 taosgen
  • Django开发规范:构建可维护的AWS资源管理应用
  • LRU 内存淘汰策略
  • 扩展中国剩余定理脚本(恢复密文c)
  • 匠心传承,古韵新生——记木雕名家龙巍的艺术人生
  • Android 打包适配15 版本(api 35)问题处理
  • 【观成科技】蔓灵花User下载者加密通信分析
  • 微硕WINSOK高性能NP沟道MOS管WSP4067在Type-C双向快充电源管理系统中的应用
  • 美摄科技受邀参加2025中关村论坛年会,以超高清车载影像技术赋能智慧出行新体验!
  • 4x12G-SDI(四链接12G-SDI)
  • Lambda 表达式在 PyQt/PySide 中的应用
  • 突破传统企业组网瓶颈:某科技公司智能组网服务项目深度解析
  • Docker部署单节点使用KRaft存储数据的Kafka与可视化界面Kafka-Map
  • 解决多种类潮湿敏感元器件的多温度、多时长的排潮烘干
  • 网络编程 04:TCP连接,客户端与服务器的区别,实现 TCP 聊天及文件上传,Tomcat 的简单使用
  • CVPR 强化学习模块深度分析:连多项式不等式+自驾规划
  • 判断语句中std::cin隐式转换为bool--重载operator bool()