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.pswp.cn/pingmian/94682.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94682.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94682.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

理解虛擬 DOM:前端開發中的高效渲染利器

在前端開發中&#xff0c;我們經常聽到 虛擬 DOM&#xff08;Virtual DOM&#xff09; 這個概念。它是 React、Vue 等框架的核心機制之一&#xff0c;用來提升性能和簡化開發。那么&#xff0c;虛擬 DOM 到底是什么&#xff1f;為什么要用它&#xff1f;又是如何工作的呢&#…

GraphRAG數據可視化

GraphRAG數據可視化

vue/react項目如何跳轉到一個已經寫好的html頁面

如果是一個你copy的別人的網站&#xff0c;某些頁面是已經可以直接使用的&#xff0c;但是有些頁面需要在vue/react項目中重新二次調整加工&#xff0c;這個時候&#xff0c;就需要將html文件和vue/react項目結合&#xff0c;當某些頁面可以直接使用&#xff0c;就直接跳轉到這…

MYSQL-表的約束(下)

目錄 自增長 唯一鍵 外鍵 自增長 MySQL自增長&#xff08;Auto-Increment&#xff09; 是一種字段屬性&#xff0c;用于為表中的記錄自動生成唯一的連續整數&#xff0c;常作為主鍵或唯一標識字段使用&#xff0c;避免手動輸入重復值。 核心特性 1. 自動賦值&#xff1a…

《UE5_C++多人TPS完整教程》學習筆記44 ——《P45 傾斜與側向移動(Leaning And Strafing)》

本文為B站系列教學視頻 《UE5_C多人TPS完整教程》 —— 《P45 傾斜與側向移動&#xff08;Leaning And Strafing&#xff09;》 的學習筆記&#xff0c;該系列教學視頻為計算機工程師、程序員、游戲開發者、作家&#xff08;Engineer, Programmer, Game Developer, Author&…

使用docker搭建嵌入式Linux開發環境

文章目錄1、前言2、安裝docker3、編寫容器管理腳本4、創建容器1、前言 在日常開發全志、rk等不同平臺時&#xff0c;大多數時候只有一個編譯主機&#xff0c;但不同sdk所需要的編譯環境可能不同。所以本文將記錄使用docker為每個平臺創建獨立的開發環境。 2、安裝docker # 1…

【開題答辯全過程】以基于Android的校園跳蚤市場交易系統的設計與實現為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

【學習筆記】GB 42250-2022標準解析

隨著數字化轉型的加速推進和網絡安全威脅的日益復雜化&#xff0c;網絡安全專用產品作為保護關鍵信息基礎設施的第一道防線&#xff0c;其安全性和可靠性受到國家的高度重視。GB 42250-2022《信息安全技術 網絡安全專用產品安全技術要求》作為一項強制性國家標準&#xff0c;于…

QML開發踩坑記:從MVVM到QWidget的掙扎

如題&#xff1a;最近這一周在開發的時候被qml不友好的前端框架打敗了。首先&#xff0c;我沒深入&#xff08;系統的&#xff09;學習過前端的內容&#xff0c;就是在學習Qt的時候了解到了qwidget&#xff0c;后來發現美化不太足的樣子&#xff0c;外加AI十分推崇基于QML的MVV…

[Mysql數據庫] 知識點總結5

1. 什么是“最少權限原則”&#xff1f;答&#xff1a;應用最少權限原則就是僅為用戶授予高效地完成任務所需的權限&#xff0c;除此之外的任何權限均不能授 予&#xff0c;這可以降低用戶修改或查看&#xff08;無意或惡意&#xff09;他們無權修改或查看的數據的機率&#xf…

儲能變流器學習之MPPT

MPPT最大功率點追蹤技術詳解 引言 在可再生能源系統中&#xff0c;最大化能量捕獲效率是核心目標。無論是光伏發電系統還是儲能變流器&#xff08;PCS&#xff09;&#xff0c;最大功率點追蹤&#xff08;MPPT&#xff09; 技術都是實現這一目標的關鍵。本文將深入探討MPPT技術…

qData 數據中臺完整功能介紹 —— 商業版與開源版功能對比

一、qData 數據中臺概覽 在數字化轉型的大背景下&#xff0c;數據已經成為企業最核心、最具價值的資產。qData 數據中臺&#xff0c;作為企業數據治理與應用的關鍵平臺&#xff0c;憑借高性能與創新理念脫穎而出。它秉持 “高效、安全、靈活、開放” 的設計原則&#xff0c;致力…

Xshell 自動化腳本大賽技術文章大綱

一、引言1.1 大賽背景與意義介紹 Xshell 在運維、開發等領域的廣泛應用&#xff0c;強調自動化腳本對于提升效率、減少錯誤的重要性。闡述大賽旨在激發用戶創新&#xff0c;挖掘 Xshell 自動化腳本更多潛力&#xff0c;促進技術交流與共享。1.2 目標受眾明確文章面向熟悉基本 L…

Python 數據分析學習筆記:Pandas 邏輯運算

&#x1f539; DA9&#xff1a;2020年畢業且使用Java的用戶&#x1f4cc; 題目描述篩選出 2020年畢業 且 常用語言為 Java 的用戶&#xff0c;輸出他們的全部信息&#xff0c;并設置顯示選項以完整顯示數據。? 正確代碼import pandas as pd# 讀取數據 Nowcoder pd.read_csv(N…

圖像邊緣檢測

目錄 一.圖像邊緣檢測 1.圖像邊緣檢測概述 2.Sobel算子原理與實現 3.Scharr算子 4.Laplacian算子 5.Canny邊緣檢測&#xff08;重點&#xff09; 6.效果對比 一.圖像邊緣檢測 1.圖像邊緣檢測概述 2.Sobel算子原理與實現 代碼是實現步驟&#xff1a; 邊緣檢測是圖像處…

zookeeper-znode解析

一. 數據模型&#xff1a;ZK擁有一個命名空間就像一個精簡的文件系統&#xff0c;不同的是它的命名空間中的每個節點擁有它自己或者它下面子節點相關聯的數據。ZK中必須使用絕對路徑也就是使用“/”開頭。二. znode&#xff1a;zk目錄樹中每個節點對應一個znode。每個znode維護…

Redis 高可用篇

主從復制是怎么實現的&#xff1f; 如果服務器發生了宕機&#xff0c;由于數據恢復是需要點時間&#xff0c;那么這個期間是無法服務新的請求的&#xff1b;如果這臺服務器的硬盤出現了故障&#xff0c;可能數據就都丟失了。 要避免這種單點故障&#xff0c;最好的辦法是將數據…

C++ 指針與引用面試深度解析

C 指針與引用面試深度解析面試官考察指針和引用&#xff0c;不僅是考察語法&#xff0c;更是在考察你對C中 “別名” (Aliasing) 與 “地址” (Addressing) 這兩種間接訪問機制的理解&#xff0c;以及你對 “代碼安全” 和 “接口設計” 的思考深度。第一部分&#xff1a;核心知…

LinuxC語言線程的同步與互斥

一.線程的同步與互斥1. 基礎概念:1.1 互斥&#xff1a;對共享資源的訪問&#xff0c;同一時刻只允許一個訪問者進行訪問&#xff0c;互斥具有唯一和排他性&#xff0c;互斥無法保證對共享資源的訪問順序1.2 同步: 在互斥的基礎上&#xff0c;實現對共享資源的有序訪問。2. 互斥…

Centos 7.6離線安裝docker

在內網環境下&#xff0c;一般不能聯網在線部署&#xff0c;這時候就需要以離線的方式安裝docker。本節內容主要總結一下在CentOS 7.6環境中離線安裝docker的步驟。 1、下載docker安裝包 https://pan.baidu.com/share/init?surlPaUllQZ-dwpgJ7quA5IkcQ&pwd4sfc 2、上傳到服…