springboot開發項目 SLF4J+Logback日志框架集成【最終篇】

在這篇文章之前,實際對于 springboot和SLF4J+Logback日志框架的使用 我已經分享過3篇關于springboot 日志的文章了。為什么會在寫這篇最終篇,因為 前3篇分享的關于springBoot框架日志的配置方案,
發現了一個問題:只有項目啟動的時候會以日期創建一個文件夾,然后當第二天的時候,該觸發滾動策略的時候,創建新的日期文件夾,就不會觸發了。
這篇文章就是為了解決這個問題,我重新整理測試 寫了新的 關于 SLF4J+Logback日志框架的使用配置。如果后續又發現新的問題,我也會持續更新文章,也請小伙伴如果遇到相關問題,有解決方案大家多多交流學習。
先分享一下 以前3篇的文章地址:
第一篇:日志打印到控制臺及日志輸出到指定文件
https://blog.csdn.net/Drug_/article/details/137913293

第二篇:日志上報到飛書或釘釘的解決方案
https://blog.csdn.net/Drug_/article/details/139143307

第三篇:解決mybatis-plus 將sql語句 輸出到日志文件
https://blog.csdn.net/Drug_/article/details/139351713

三篇文章都是解決不同的日志需求。
以下代碼 會包含上面文章里的所有需求配置并解決了上面說的日志第二天不創建文件夾的相關問題
但是只會分享了 logback-spring.xml 文件,別的相關配置 請還參考上面3篇文章
那就直接上代碼了
大家按需使用即可

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="10 seconds"><!-- 日志級別從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設置為WARN,則低于WARN的信息都不會輸出 --><!-- scan:當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true --><!-- scanPeriod:設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan為true時,此屬性生效。默認的時間間隔為1分鐘。 --><!-- debug:當此屬性設置為true時,將打印出logback內部日志信息,實時查看logback運行狀態。默認值為false。 --><springProperty scope="context" name="serviceName" source="spring.application.name" /><contextName>logback</contextName><!-- name的值是變量的名稱,value的值時變量定義的值。通過定義的值會被插入到logger上下文中。定義變量后,可以使“${}”來使用變量。 --><!--    日志輸出位置--><property name="log.path" value="/home/logs/xxxService" /><!-- 彩色日志 --><!-- 配置格式變量:CONSOLE_LOG_PATTERN 彩色日志格式 --><!-- magenta:洋紅 --><!-- boldMagenta:粗紅--><!-- cyan:青色 --><!-- white:白色 --><!-- magenta:洋紅 --><property name="CONSOLE_LOG_PATTERN"value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%magenta(%msg%n)"/><!--輸出到控制臺--><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><!--此日志appender是為開發使用,只配置最底級別,控制臺輸出的日志級別是大于或等于此級別的日志信息--><!-- 例如:如果此處配置了INFO級別,則后面其他位置即使配置了DEBUG級別的日志,也不會被輸出 --><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>DEBUG</level></filter><encoder><Pattern>${CONSOLE_LOG_PATTERN}</Pattern><!-- 設置字符集 --><charset>UTF-8</charset></encoder></appender><!--輸出到文件--><!-- 時間滾動輸出 level為 INFO 日志 --><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在記錄的日志文件的路徑及文件名 --><file>${log.path}/log_info.log</file><!--日志文件輸出格式--><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><charset>UTF-8</charset></encoder><!-- 日志記錄器的滾動策略,按日期,按大小記錄 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 每天日志歸檔路徑以及格式 --><fileNamePattern>${log.path}/%d{yyyy-MM-dd,aux}/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern><!-- 單個日志文件最多 200MB --><maxFileSize>200MB</maxFileSize><!-- 總日志文件最多 3G --><totalSizeCap>3GB</totalSizeCap><!--日志文件保留天數--><maxHistory>7</maxHistory></rollingPolicy><!-- 此日志文件只記錄info級別的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 時間滾動輸出 level為 WARN 日志 --><appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在記錄的日志文件的路徑及文件名 --><file>${log.path}/log_warn.log</file><!--日志文件輸出格式--><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><charset>UTF-8</charset> <!-- 此處設置字符集 --></encoder><!-- 日志記錄器的滾動策略,按日期,按大小記錄 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${log.path}/%d{yyyy-MM-dd,aux}/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern><!-- 單個日志文件最多 200MB --><maxFileSize>200MB</maxFileSize><!-- 總日志文件最多 3G --><totalSizeCap>3GB</totalSizeCap><!--日志文件保留天數--><maxHistory>7</maxHistory></rollingPolicy><!-- 此日志文件只記錄warn級別的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>warn</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 時間滾動輸出 level為 ERROR 日志 --><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在記錄的日志文件的路徑及文件名 --><file>${log.path}/log_error.log</file><!--日志文件輸出格式--><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><charset>UTF-8</charset> <!-- 此處設置字符集 --></encoder><!-- 日志記錄器的滾動策略,按日期,按大小記錄 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${log.path}/%d{yyyy-MM-dd,aux}/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern><!-- 單個日志文件最多 200MB --><maxFileSize>200MB</maxFileSize><!-- 總日志文件最多 3G --><totalSizeCap>3GB</totalSizeCap><!--日志文件保留天數--><maxHistory>7</maxHistory></rollingPolicy><!-- 此日志文件只記錄ERROR級別的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="SendErrorMsgAppender" class="com.xxx.init.exception.SendErrorMsgAppender"><!-- 此日志文件只記錄ERROR級別的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 時間滾動輸出 level為 mybatis debug 日志 只有debug模式mybatis 日志才會 所以必須開啟debug    --><appender name="MYBATIS_DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在記錄的日志文件的路徑及文件名 --><file>${log.path}/log_mybatis_sql.log</file><!--日志文件輸出格式--><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><charset>UTF-8</charset> <!-- 此處設置字符集 --></encoder><!-- 日志記錄器的滾動策略,按日期,按大小記錄 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${log.path}/%d{yyyy-MM-dd,aux}/log-mybatis-sql-%d{yyyy-MM-dd}.%i.log</fileNamePattern><!-- 單個日志文件最多 200MB --><maxFileSize>200MB</maxFileSize><!-- 總日志文件最多 3G --><totalSizeCap>3GB</totalSizeCap><!--日志文件保留天數--><maxHistory>7</maxHistory></rollingPolicy><!-- 此日志文件只記錄DEBUG級別的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--<logger>用來設置某一個包或者具體的某一個類的日志打印級別、以及指定<appender>。<logger>僅有一個name屬性,一個可選的level和一個可選的addtivity屬性。name:用來指定受此logger約束的某一個包或者具體的某一個類。level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,如果未設置此屬性,那么當前logger將會繼承上級的級別。--><!--使用mybatis的時候,sql語句是debug下才會打印,而這里我們只配置了info,所以想要查看sql語句的話,有以下兩種操作:第一種把<root level="INFO">改成<root level="DEBUG">這樣就會打印sql,不過這樣日志那邊會出現很多其他消息第二種就是單獨給mapper下目錄配置DEBUG模式,代碼如下,這樣配置sql語句會打印,其他還是正常DEBUG級別:--><!--開發環境:打印控制臺--><springProfile name="dev"><!--可以輸出項目中的,mybatis的sql debug日志  別的debug日志不打印, additivity="false" 不傳播到根logger --><logger name="com.xxx.aaa.mapper" level="DEBUG"  ><appender-ref ref="MYBATIS_DEBUG_FILE"/></logger><logger name="com.xxx.aaa.service" level="DEBUG" ><appender-ref ref="MYBATIS_DEBUG_FILE"/></logger><logger name="com.baomidou.mybatisplus" level="DEBUG"  ><appender-ref ref="MYBATIS_DEBUG_FILE"/></logger><!--root節點是必選節點,用來指定最基礎的日志輸出級別,只有一個level屬性level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,默認是DEBUG可以包含零個或多個appender元素。--><root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="INFO_FILE" /><appender-ref ref="WARN_FILE" /><appender-ref ref="ERROR_FILE" />
<!--            <appender-ref ref="SendErrorMsgAppender"/>--></root></springProfile><!--生產環境:輸出到文件--><springProfile name="prd">
<!--     寫這   只有 com.xxx包下的日志 會發送到飛書 -->
<!--        <logger name="com.xxx" level="INFO" >-->
<!--            <appender-ref ref="SendErrorMsgAppender"/>-->
<!--        </logger>--><logger name="com.xxx.aaa.mapper" level="DEBUG" additivity="false" ><appender-ref ref="MYBATIS_DEBUG_FILE"/></logger><logger name="com.xxx.aaa.service" level="DEBUG" additivity="false"><appender-ref ref="MYBATIS_DEBUG_FILE"/></logger><logger name="com.baomidou.mybatisplus" level="DEBUG" additivity="false" ><appender-ref ref="MYBATIS_DEBUG_FILE"/></logger><!--     寫這  所有的ERROR錯誤日志都會發送到飛書  --><root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="INFO_FILE" /><appender-ref ref="ERROR_FILE" /><appender-ref ref="WARN_FILE" /><appender-ref ref="SendErrorMsgAppender"/></root></springProfile></configuration>

最終效果:
在這里插入圖片描述
注意點: 當天的不會建立文件夾 隔天會把昨天的放進文件夾里面

封面圖片,請忽略
在這里插入圖片描述

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

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

相關文章

phpstudy無法啟動apache,80端口被占用,完美解決

phpstudy無法啟動apache&#xff0c;80端口被占用&#xff0c;完美解決 解決方法一(最推薦) 依次點擊網站-管理-修改 將端口由80改為81&#xff0c;再點擊確認后即可重新啟動apache。 需要注意的是&#xff0c;網站的訪問由127.0.0.1變為127.0.0.1:81。默認是80的端口所以可以不…

Loggers 配置解析(log4j.xml)

Loggers 配置解析 我們通過下面的例子來理解 log4j 的 Loggers 配置是如何決定日志輸出規則的。 <Loggers><!-- 根Logger&#xff1a;全局配置 --><Root level"debug"><AppenderRef ref"consoleAppender" level"info"/&g…

Java 大視界 -- Java 大數據在智能政務輿情監測與引導中的情感分析與話題挖掘技術(272)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

[NocoDB] 在局域網中調整Float類型顯示精度的部署經驗

在單位局域網環境中,NocoDB有效地連接MySQL數據庫和前端服務,做為中間件很方便。然而,在實際應用中,我們也會遇到一些較為隱藏的設置問題,比如此次經歷的 float 顯示精度不匹配問題。 問題環境 實際數據庫:MySQL,表中有 float 類型的數據 原始數據來源:Excel表格 數據轉…

Dockerfile 常見指令詳解

Dockerfile 是一個文本文件&#xff0c;包含了一系列用于構建 Docker 鏡像的指令。以下是 Dockerfile 中常見指令的詳細解釋&#xff1a; 基礎指令 1. FROM 指定基礎鏡像&#xff0c;必須為第一條指令&#xff08;注釋除外&#xff09;。 FROM ubuntu:20.04 FROM python:3.…

InnoDB Cluster 與 NDB Cluster 對比及部署指南

InnoDB Cluster 與 NDB Cluster 對比及部署指南 一、核心區別對比 特性InnoDB ClusterNDB Cluster存儲引擎InnoDBNDB (內存優先)架構設計基于Group Replication分布式架構(數據節點管理節點SQL節點)一致性模型最終一致性/強一致性強一致性數據持久化磁盤存儲為主內存存儲為主…

PySide環境配置及工具使用

文章目錄 [toc]1 概述1.1 PySide 能做什么&#xff1f;1.2 PySide 的優點1.3 PySide 的缺點1.4 示例代碼&#xff08;簡單窗口&#xff09; 2 環境準備2.1 安裝必要軟件2.2 修改 pip 源 3 PySide23.1 環境要求3.2 配置PySide23.3 工具配置 4 PySide64.1 環境4.2 配置PySide64.3…

數據標注師學習內容

目錄 文本標注詞性標注實體標注 圖像標注語音標注 文本標注 詞性標注 第一篇 第二篇 實體標注 點擊這里 關系標注 事件標注 意圖標注 關鍵詞標注 分類標注 問答標注 對話標注 圖像標注 拉框標注 關鍵點標注 2D標注 3D標注 線標注 目標跟蹤標注 OCR標注 圖像分類標注 語音…

【linux】文件與目錄命令 - rsync

文章目錄 1. 基本用法2. 常用參數3. 用法舉例4. 注意事項 rsync 命令用于快速同步文件和目錄&#xff0c;可用于本地和遠程傳輸&#xff0c;支持增量同步、壓縮、權限保留等特性。 1. 基本用法 語法&#xff1a; rsync [選項] 源 目標功能&#xff1a; 高效增量同步&#xff…

互聯網大廠Java求職面試:電商系統高并發設計

互聯網大廠Java求職面試&#xff1a;電商系統高并發設計 文章內容 面試官&#xff08;技術總監&#xff09;與鄭薪苦的對話 面試官&#xff1a; “鄭薪苦&#xff0c;歡迎來到我們的面試。今天我們會圍繞一個非常熱門的話題——電商系統的高并發設計進行深入探討。你之前在某…

Nginx跨云反向代理排錯:解密配置參數的“陷阱”

前言&#xff1a;在當今的云計算環境中&#xff0c;跨云平臺的應用部署變得越來越常見。為了驗證跨云平臺反向代理的可行性&#xff0c;我們進行了一次測試。本次測試將后端程序部署在阿里云服務器&#xff0c;同時使用在騰訊云注冊的已備案國內域名。我們在騰訊云控制臺將域名…

股票賬戶的管理和交易

中國證券登記結算有限責任公司&#xff08;簡稱“中國結算”&#xff09;確實是負責股票的賬戶管理&#xff08;開戶、銷戶&#xff09;和登記、存管、清算、交收等后臺業務的中央機構。它確保了股票所有權的準確記錄和交易后資金與證券的最終轉移。 而股票的交易業務&#xff…

Arcgis地理配準變換方法說明

零階多項式 - 將使用零階多項式來平移數據。 當已對數據進行地理配準但通過微小的平移可以更好的排列數據時&#xff0c;通常使用該多項式。 執行零階多項式平移只需要一個連接線。相似性多項式 - 將使用一階變換&#xff0c;嘗試保持原始柵格的形狀。 RMS 錯誤會高于其他多項式…

深入理解 C++ volatile 與 atomic:五大用法解析 + 六大高頻考點

一、volatile volatile是C中一個非常重要的關鍵字。volatile關鍵字告訴編譯器&#xff0c;被修飾的變量可能會在程序控制之外被改變&#xff0c;因此編譯器不能對該變量的訪問進行優化。什么意思呢&#xff1f;現代處理器架構中&#xff0c;有寄存器&#xff0c;L1緩存&#x…

跨主機管理Docker容器化應用的操作與技巧

哈嘍&#xff0c;大家好&#xff0c;我是左手python&#xff01; 環境準備與 Docker 安裝 在開始跨主機管理 Docker 容器化應用之前&#xff0c;需要確保所有主機上都安裝了 Docker 引擎&#xff0c;并且這些主機之間可以通過 SSH 協議進行通信。本節將詳細介紹環境準備和 Doc…

編程實踐:sigmastar330 調用IVE圖像處理加速

說明:本專欄文章有兩種解鎖方案 1:付費訂閱,暢享所有文章 2:免費獲取,點擊下方鏈接,關注,自動獲取免費鏈接 https://free-img.400040.xyz/4/2025/04/29/6810a50b7ac8b.jpg 主題:利用IVE進行圖像處理加速 Sigmastar 支持的硬件操作,基本都在:mi_ive.h 文件中,本文…

Nginx+PHP+MySQL安裝參考

NginxPHPMySQL安裝參考 CentOS7環境 配置CentOS7網絡&#xff1a; CentOS(最小安裝)默認是不打開網絡的 啟動網絡 vi打開&#xff1a;/etc/sysconfig/network-scripts/ifcfg-ens33 文件 將 “ONBOOT:no”屬性修改為&#xff1a;“ONBOOT:yes” 重啟網絡服務 # sudo service …

JavaScript中的反射魔法:揭秘Reflect對象的核心方法(下)

JavaScript中的Reflect對象&#xff1a;高級方法解析&#xff08;下&#xff09; 在JavaScript中&#xff0c;Reflect對象不僅提供了基礎的對象操作方法&#xff08;如get、set等&#xff09;&#xff0c;還包含了許多高級API&#xff0c;用于更精細地控制對象行為。本文將繼續…

【數字人開發】Unity+百度智能云平臺實現長短文本個性化語音生成功能

一、創建自己的應用 百度智能云控制臺網址&#xff1a;https://console.bce.baidu.com/ 1、創建應用 2、獲取APIKey和SecretKey 3、Api調試 調試網址&#xff1a;https://console.bce.baidu.com/support/?timestamp1750317430400#/api?productAI&project%E8%AF%AD%E9%…

銀河麒麟 | ubuntu 搭建屬于自己的郵件服務器

目錄 遇權不絕就轉root 更新系統 安裝 Postfix 配置 Postfix 重啟 Postfix 安裝 Dovecot 配置 Dovecot 編輯 Dovecot 的 IMAP 配置文件 編輯 Dovecot 的用戶認證配置文件 編輯 Dovecot 的服務配置文件 重啟 Dovecot 安裝發送郵箱功能 發送郵件 測試 遇權不絕就轉…