【經驗總結】Springboot打印指定類的日志到指定文件中

原文地址:https://www.cnblogs.com/zeng1994/p/f9bff238b13a0bf8fb8bf88c41db7a34.html
以下內容已經過實踐,勘誤,總結
環境:Springboot2.5.2

公司有個項目,需要和幾個第三方系統對接。這種項目,日志一定要記錄詳細,不然出了問題就是各種甩鍋。雖然項目里面和第三方系統對接相關的業務記錄的日志很詳細,但是由于整個項目的日志都在一個文件中,排查問題時比較麻煩。因此希望可以把這些和第三方對接的日志生成在另外一個單獨的文件。這也就是標題中的實現按業務輸出日志到不同的文件,下面開始講解具體的實現方案。

一、方案

由于需要按業務生成不同的日志文件,看到按業務來區分,我的第一感覺就是業務其實是可以按包名來區分的。所以其實我們只要實現不同的包下面的日志輸出到不同的文件,就能實現需求了。由于本人以前玩過log4j2,要實現這個還是不難的,所以馬上就有思路了。

具體的實現思路如下:
(1)自定義一個輸出到文件的appender(理解為日志輸出器)
(2)配置logger,logger的name為需要單獨生成文件的那個包的全包名,然后在里面引用上面定義的appender

二、具體實現

(1)準備階段
由于項目采用SpringBoot框架,而且使用的是默認日志框架logback。看了下官網,只需要在resources下面定義一個logback-spring.xml的XML文件就能覆蓋默認的logback配置。
由于SpringBoot默認的日志配置還是挺不錯的,因此想把默認的配置保留下來。通過查看springboot的jar包才找到默認的logback的xml配置。
它的位置為spring-boot-2.1.0.RELEASE.jar!\org\springframework\boot\logging\logback\base.xml,這個默認xml中有如下配置:
定義了2個appender,分別為輸出到控制臺的appender和輸出到文件的appender
默認日志級別為info,默認引用了上面定義的這個2個appender
(2)實戰階段
在resources目錄下新建一個logback-spring.xml的文件
將logback的默認配置(base.xml)內容copy到我們的xml文件中,因為我們想保留它的默認配置
定義一個輸出到文件的appender
定義一個logger,logger的name為需要單獨生成文件的那個包的全包名
logger里面引用我們上面定義的appender
這里特別說明,自定義logger是屬于局部配置,它的優先級高于全局配置(指root),可以理解為局部配置覆蓋全局配置。

代碼如下

logback-spring.xml內容具體如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--官方配置 start--><!--保留官方配置,方便使用官方配置的特性,參考:spring-boot-2.1.0.RELEASE.jar!\org\springframework\boot\logging\logback\base.xml--><!--<included>--><include resource="org/springframework/boot/logging/logback/defaults.xml"/><property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/><include resource="org/springframework/boot/logging/logback/console-appender.xml"/><include resource="org/springframework/boot/logging/logback/file-appender.xml"/><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/></root><!--</included>--><!--官方配置 end--><!--######自定義配置  start########--><!-- 自定義配置__單獨輸出到一個日志文件中 --><appender name="Biz_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>${FILE_LOG_PATTERN}</pattern></encoder><file>${LOG_FILE}_BIZ.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE}_BIZ.%d{yyyy-MM-dd}.%i.gz</fileNamePattern><maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize><maxHistory>${LOG_FILE_MAX_HISTORY:-0}</maxHistory></rollingPolicy></appender><!--指定包或者類的日志配置(這里是局部配置,它能覆蓋全局配置)--><!-- 自定義配置__配置業務日志輸出至單獨的日志文件中 --><logger name="com.huicoo.forestry.resources.manager.ImportManager" additivity="false" level="debug"><!-- 引用自定義的appender --><appender-ref ref="Biz_LOG"/><!-- 這里也引用控制臺appender,才能在控制臺中看到我們的日志 --><appender-ref ref="CONSOLE"/></logger><!--######自定義配置  end########-->
</configuration>

最終實現日志單獨打印到指定的_biz.log文件中

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41096.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41096.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41096.shtml

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

相關文章

香橙派 AIpro 根據心情生成專屬音樂

香橙派 AIpro 根據心情生成專屬音樂 一、OrangePi AI pro 開發版參數介紹1.1 接口簡介1.2 OrangePi AI pro 的Linux系統功能適配情況1.3 開發板開機1.4 遠程連接到 OrangePi AIpro 二、開發環境搭建2.1 創建環境、代碼部署文件夾2.2 安裝 miniconda2.3 為 miniconda 更新國內源…

生態系統NPP及碳源、碳匯模擬技術教程

原文鏈接&#xff1a;生態系統NPP及碳源、碳匯模擬技術教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608293&idx3&sn2604c5c4e061b4f15bb8aa81cf6dadd1&chksmfa826602cdf5ef145c4d170bed2e803cd71266626d6a6818c167e8af0da93557c1288da21a71&a…

【綜合能源】計及碳捕集電廠低碳特性及需求響應的綜合能源系統多時間尺度調度模型

目錄 1 主要內容 2 部分程序 3 實現效果 4 下載鏈接 1 主要內容 本程序是對《計及碳捕集電廠低碳特性的含風電電力系統源-荷多時間尺度調度方法》方法復現&#xff0c;非完全復現&#xff0c;只做了日前日內部分&#xff0c;并在上述基礎上改進升級為電熱綜合電源微網系統&…

vue+openlayers之幾何圖形交互繪制基礎與實踐

文章目錄 1.實現效果2.實現步驟3.示例頁面代碼3.基本幾何圖形繪制的關鍵代碼 1.實現效果 繪制點、線、多邊形、圓、正方形、長方形 2.實現步驟 引用openlayers開發庫。加載天地圖wmts瓦片地圖。在頁面上添加幾何圖形繪制的功能按鈕&#xff0c;使用下拉列表&#xff08;sel…

程序員績效管理-進一步思考

工時管理也好、項目管理&#xff08;軟件項目&#xff09;也好&#xff0c;市面上已經很多了&#xff0c;你做這個和他們區別何在&#xff1f;大的公司一般都自己做&#xff0c;誰又為你買單&#xff1f;根據目前的反饋&#xff0c;主要的疑問就是這兩個問題。 進一步思考如下&…

基于JavaScript、puppeteer的爬蟲

前期準備: npm puppeteer import puppeteer from puppeteer; puppeteer文檔 第一步&#xff1a;啟動瀏覽器&#xff0c;跳轉到需要爬取的頁面 const browser await puppeteer.launch({ headless: false });const page await browser.newPage();await page.goto(url, { w…

【目標檢測實驗系列】YOLOv5模型改進:引入輕量化多維動態卷積ODConv,減少計算量的同時保持精度穩定或略微上漲!(內含源代碼,超詳細改進代碼流程)

1. 文章主要內容 本篇博客主要涉及輕量化多維動態卷積ODConv&#xff0c;融合到YOLOv5模型中&#xff0c;減少計算量的同時保持精度穩定或略微上漲。&#xff08;通讀本篇博客需要7分鐘左右的時間&#xff09;。 2. 介紹 ODconv沿著空間、輸入通道、輸出通道以及卷積核空間的核…

領導被我的花式console.log吸引了!直接寫入公司公共庫!

背景簡介 這幾天代碼評審,領導無意中看到了我本地代碼的控制臺,被我花里胡哨的console打印內容吸引了! 老板看見后,說我這東西有意思,花里胡哨的,他喜歡! 但是隨即又問我,這么花里胡哨的東西,上生產會影響性能吧?我自信的說:不會,代碼內有判斷的,只有開發環境會…

后端工作之一:CrapApi —— API接口管理系統部署

一個API接口的網絡請求都有這些基本元素構成&#xff1a; API接口大多數是由后端編寫&#xff0c;前端開發人員進行請求調用 就是一個網絡請求的流程。 API&#xff08;Application Programming Interface&#xff09;接口是現代軟件開發中不可或缺的一部分。它們提供了一種…

14270-02G 同軸連接器

型號簡介 14270-02G是Southwest Microwave的2.4 mm 同軸連接器。這款連接器連接器采用不銹鋼、鈹銅合金、黃銅合金和 ULTEM 1000 等高質量材料&#xff0c;可能具有更好的耐腐蝕性、導電性和機械強度。金鍍層可以提供更低的接觸電阻和更好的耐腐蝕性。 型號特點 電纜的中心導體…

過擬合和欠擬合的概念

過擬合和欠擬合的概念 過擬合&#xff08;Overfitting&#xff09;是指機器學習模型在訓練數據上表現得非常好&#xff0c;但在新數據&#xff08;測試集或實際應用中的數據&#xff09;上卻表現不佳的現象。這種情況通常發生在模型復雜度過高&#xff0c;導致它過度適應了訓練…

健康課程知識培訓小程序網站如何學員教務管理

醫學專業學生或是從業醫生、護士等都需要不斷學習鞏固自己的技術和拓寬知識面&#xff0c;除了主要學習來源外&#xff0c;培訓機構課程需求也是提升自身實力的方法&#xff0c;市場中也存在不少醫藥健康內容培訓機構或是醫院內部員工培訓等。 運用雨科平臺搭建醫藥健康內容培…

前端八股文 說一下盒模型

網頁中任何一個元素都可以視為一個盒子&#xff0c;由里到外&#xff0c;盒模型包括外邊界&#xff08;margin&#xff09;、邊框&#xff08;border&#xff09;、內邊界&#xff08;padding&#xff09;和內容&#xff08;content&#xff09;。 盒模型基本分為3種&#xff1…

k8s離線安裝安裝skywalking9.4

目錄 概述資源下載Skywalking功能介紹成果速覽實踐rbacoapoap-svcuiui-svc 結束 概述 k8s 離線安裝安裝 skywalking9.4 版本&#xff0c;環境&#xff1a;k8s版本為&#xff1a;1.27.x 、spring boot 2.7.x spring cloud &#xff1a;2021.0.5 、spring.cloud.alibab&#xff1…

智慧消防視頻監控煙火識別方案,筑牢安全防線

一、方案背景 在現代化城市中&#xff0c;各類小型場所&#xff08;簡稱“九小場所”&#xff09;如小餐館、小商店、小網吧等遍布大街小巷&#xff0c;為市民生活提供了極大的便利。然而&#xff0c;由于這些場所往往規模較小、人員流動性大、消防安全意識相對薄弱&#xff0…

vue配置sql規則

vue配置sql規則 實現效果組件完整代碼父組件 前端頁面實現動態配置sql條件&#xff0c;將JSON結構給到后端&#xff0c;后端進行sql組裝。 這里涉及的分組后端在組裝時用括號將這塊規則括起來就行&#xff0c;分組的sql連接符&#xff08;并且/或者&#xff09;取組里的第一個。…

【Linux】Linux常用指令合集精講,一篇讓你徹底掌握(萬字真言)

文章目錄 一、文件與目錄操作1.1 ls - 列出目錄內容1.2 cd - 切換目錄1.3 pwd - 顯示當前目錄1.4 mkdir - 創建目錄1.5 rmdir - 刪除空目錄1.6 rm - 刪除文件或目錄1.7 cp - 復制文件或目錄1.8 mv - 移動或重命名文件或目錄1.9 touch - 創建空文件或更新文件時間戳 二、文件內容…

Vue 詳情實戰涉及從項目初始化到功能實現、測試及部署的整個過程

本人詳解 作者:王文峰,參加過 CSDN 2020年度博客之星,《Java王大師王天師》 公眾號:JAVA開發王大師,專注于天道酬勤的 Java 開發問題中國國學、傳統文化和代碼愛好者的程序人生,期待你的關注和支持!本人外號:神秘小峯 山峯 轉載說明:務必注明來源(注明:作者:王文峰…

《操作系統真象還原》學習筆記:第2章——編寫MBR主引導記錄

2.1 計算機的啟動過程 載入內存&#xff1a; &#xff08;1&#xff09; 程序被加載器&#xff08;軟件或硬件&#xff09;加載到內存某個區域 &#xff08;2&#xff09;CPU 的 cs:ip 寄存器被指向這個程序的起始地址 2.2 軟件接力第一棒&#xff0c;BIOS 2.2.1 實模式下的…

Jenkins 使用 Publish over SSH進行遠程訪問

Publish over SSH 是 Jenkins 的一個插件,可以讓你通過 SSH 將構建產物分發到遠程服務器。以下是如何開啟 Publish over SSH 的步驟: 一、安裝 Publish over SSH 插件 在 Jenkins 中,進入 "Manage Jenkins" > "Manage Plugins"。選擇 "Availab…