偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一文讀懂Logback的配置

開發(fā) 前端
為啥想著寫這個呢?是這樣,小六六每次搭建系統(tǒng)的時候,都會涉及到這塊的配置嘛,然后我發(fā)現(xiàn)我搭建了這么多次的系統(tǒng),大部分的情況下,竟然是copy來完成的,然后這次搭建的過程中,又對這些配置又了點(diǎn)理解,所以打算給大家分享分享一些關(guān)鍵的點(diǎn),讓大家多Java 項目的日志有一些更加深入的理解吧!

[[421672]]

前言

文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/bin392328206/six-finger

種一棵樹最好的時間是十年前,其次是現(xiàn)在

絮叨

為啥想著寫這個呢?是這樣,小六六每次搭建系統(tǒng)的時候,都會涉及到這塊的配置嘛,然后我發(fā)現(xiàn)我搭建了這么多次的系統(tǒng),大部分的情況下,竟然是copy來完成的,然后這次搭建的過程中,又對這些配置又了點(diǎn)理解,所以打算給大家分享分享一些關(guān)鍵的點(diǎn),讓大家多Java 項目的日志有一些更加深入的理解吧!當(dāng)然這邊文章也得給大家清晰的理解logback的配置吧!盡量寫的直白點(diǎn)!文章打算沖以下幾個方面來描述

  • 官網(wǎng)文檔
  • logback.xml常用配置詳解
  • 一個小案例加深對配置的理解
  • logback.xml的參考配置(實(shí)戰(zhàn))
  • 開發(fā)時,小六六自己的一些特殊的用法(實(shí)戰(zhàn))

參考的文檔

開始就先給大家給貼下參考的文檔吧!不過我覺得你應(yīng)該不會去看,哈哈。我也是一樣的,看不下去官方文檔

logback.xml常用配置詳解

常用節(jié)點(diǎn)結(jié)構(gòu)圖:

相信大家對這個圖應(yīng)該不陌生,就是我們再spring-logback.xml里面要配置的文件就是這幾個配置,下面我先來給大家講講細(xì)節(jié)

根節(jié)點(diǎn) configuration

包含下面三個屬性

  • scan: 當(dāng)此屬性設(shè)置為true時,配置文件如果發(fā)生改變,將會被重新加載,默認(rèn)值為true。
  • scanPeriod: 設(shè)置監(jiān)測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認(rèn)單位是毫秒。當(dāng)scan為true時,此屬性生效。默認(rèn)的時間間隔為1分鐘。
  • debug: 當(dāng)此屬性設(shè)置為true時,將打印出logback內(nèi)部日志信息,實(shí)時查看logback運(yùn)行狀態(tài)。默認(rèn)值為false。
  1. <configuration scan="true" scanPeriod="60 seconds" debug="false">  
  2.     <!--其他配置省略-->  
  3. </configuration>  

子節(jié)點(diǎn) appender

它的作用是負(fù)責(zé)寫日志的組件,它有兩個必要屬性name和class。name指定appender名稱,class指定appender的全限定名。

下面小六六帶大家來看看我們常見的幾種appender吧!工作上肯定用的到的

ConsoleAppender 把日志輸出到控制臺

encoder:對日志進(jìn)行格式化。

  1. <appender name="console" class="ch.qos.logback.core.ConsoleAppender"
  2.    <encoder> 
  3.       <pattern>${CONSOLE_LOG_PATTERN}</pattern> 
  4.    </encoder> 
  5. </appender> 

 

 

FileAppender:把日志添加到文件

  • file:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創(chuàng)建,沒有默認(rèn)值。
  • append:如果是 true,日志被追加到文件結(jié)尾,如果是 false,清空現(xiàn)存文件,默認(rèn)是true。
  • encoder:對記錄事件進(jìn)行格式化。
  • prudent:如果是 true,日志會被安全的寫入文件,即使其他的FileAppender也在向此文件做寫入操作,效率低,默認(rèn)是 false。
  1. <configuration>  
  2.       <appender name="FILE" class="ch.qos.logback.core.FileAppender">  
  3.         <file>testFile.log</file>  
  4.         <append>true</append>  
  5.         <encoder>  
  6.           <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>  
  7.         </encoder>  
  8.       </appender>  
  9.  
  10.       <root level="DEBUG">  
  11.       <appender-ref ref="FILE" />  
  12.       </root>  
  13.   </configuration> 

 

 

 

 

RollingFileAppender 滾動記錄文件,先將日志記錄到指定文件,當(dāng)符合某個條件時,將日志記錄到其他文件 這個小六六覺得是用的最多的一個了

  • file:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創(chuàng)建,沒有默認(rèn)值。
  • append:如果是 true,日志被追加到文件結(jié)尾,如果是 false,清空現(xiàn)存文件,默認(rèn)是true。
  • rollingPolicy:當(dāng)發(fā)生滾動時,決定RollingFileAppender的行為,涉及文件移動和重命名。屬性class定義具體的滾動策略類

class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy":最常用的滾動策略,它根據(jù)時間來制定滾動策略,既負(fù)責(zé)滾動也負(fù)責(zé)出發(fā)滾動。

  1. <appender name="BILogger_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"
  2.    <file>${log.path}/dataBi.dat</file> 
  3.    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
  4.       <fileNamePattern>${log.path}/dataBi.dat.%d{yyyyMMdd}.gz</fileNamePattern> 
  5.       <maxHistory>30</maxHistory> 
  6.    </rollingPolicy> 
  7.    <encoder> 
  8.       <charset>UTF-8</charset> 
  9.       <pattern>%date|%msg%n</pattern> 
  10.    </encoder> 
  11. </appender> 

 

 

class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy":查看當(dāng)前活動文件的大小,如果超過指定大小會告知RollingFileAppender 觸發(fā)當(dāng)前活動文件滾動

  1. <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender"
  2.    <file>${log.path}/debug.log</file> 
  3.    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"
  4.       <fileNamePattern>${log.path}/%d{yyyy-MM, aux}/debug.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> 
  5.       <maxFileSize>50MB</maxFileSize> 
  6.       <maxHistory>30</maxHistory> 
  7.    </rollingPolicy> 
  8.    <encoder> 
  9.       <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern> 
  10.    </encoder> 
  11. </appender> 

 

 

子節(jié)點(diǎn) logger

用來設(shè)置某一個包或具體的某一個類的日志打印級別、以及指定。

  • logger僅有一個name屬性,一個可選的level和一個可選的addtivity屬性
  • 可以包含零個或多個元素,標(biāo)識這個appender將會添加到這個logger。
  • name: 用來指定受此loger約束的某一個包或者具體的某一個類。
  • level: 用來設(shè)置打印級別,大小寫無關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF,還有一個特殊值INHERITED或者同義詞NULL,代表強(qiáng)制執(zhí)行上級的級別。如果未設(shè)置此屬性,那么當(dāng)前l(fā)oger將會繼承上級的級別。
  • addtivity: 是否向上級logger傳遞打印信息。默認(rèn)是true。可以包含零個或多個appender-ref素,標(biāo)識這個appender將會添加到這個logger。
  1. <!--  logger name 和spring配置一致  --> 
  2. <logger name="BILogger" level="INFO" additivity="true"
  3.    <appender-ref ref="BILogger_FILE" /> 
  4. </logger> 

像我們的bi日志,一般這種標(biāo)準(zhǔn)化,流程化的日志。

子節(jié)點(diǎn)root

它也是logger元素,但是它是根loger,是所有的上級。只有一個level屬性,因為name已經(jīng)被命名為"root",且已經(jīng)是最上級了。

  1. <root level="INFO"
  2.    <appender-ref ref="console"/> 
  3.    <appender-ref ref="debug"/> 
  4.    <appender-ref ref="error"/> 
  5. </root> 

好了,上面就是我們比較重要的幾個元素了,還有一兩個小元素的話,小六六這邊就沒給大家看了。

logback.xml配置示例

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <configuration debug="false"
  3.  
  4.     <!--定義日志文件的存儲地址 勿在 LogBack 的配置中使用相對路徑--> 
  5.     <property name="LOG_HOME" value="/home" /> 
  6.  
  7.     <!--控制臺日志, 控制臺輸出 --> 
  8.     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"
  9.         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"
  10.             <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度,%msg:日志消息,%n是換行符--> 
  11.             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> 
  12.         </encoder> 
  13.     </appender> 
  14.  
  15.     <!--文件日志, 按照每天生成日志文件 --> 
  16.     <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"
  17.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
  18.             <!--日志文件輸出的文件名--> 
  19.             <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern> 
  20.             <!--日志文件保留天數(shù)--> 
  21.             <MaxHistory>30</MaxHistory> 
  22.         </rollingPolicy> 
  23.         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"
  24.             <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符--> 
  25.             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> 
  26.         </encoder> 
  27.         <!--日志文件最大的大小--> 
  28.         <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"
  29.             <MaxFileSize>10MB</MaxFileSize> 
  30.         </triggeringPolicy> 
  31.     </appender> 
  32.  
  33.     <!-- show parameters for hibernate sql 專為 Hibernate 定制 --> 
  34.     <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" /> 
  35.     <logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" /> 
  36.     <logger name="org.hibernate.SQL" level="DEBUG" /> 
  37.     <logger name="org.hibernate.engine.QueryParameters" level="DEBUG" /> 
  38.     <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" /> 
  39.  
  40.     <!--myibatis log configure--> 
  41.     <logger name="com.apache.ibatis" level="TRACE"/> 
  42.     <logger name="java.sql.Connection" level="DEBUG"/> 
  43.     <logger name="java.sql.Statement" level="DEBUG"/> 
  44.     <logger name="java.sql.PreparedStatement" level="DEBUG"/> 
  45.  
  46.     <!-- 日志輸出級別 --> 
  47.     <root level="DEBUG"
  48.         <appender-ref ref="STDOUT" /> 
  49.         <appender-ref ref="FILE"/> 
  50.     </root> 
  51. </configuration> 

 

 

 

 

一個小案例加深對配置的理解

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <configuration debug="false"
  3.  
  4.     <!--定義日志文件的存儲地址 勿在 LogBack 的配置中使用相對路徑--> 
  5.     <property name="LOG_HOME" value="/home" /> 
  6.  
  7.     <!--控制臺日志, 控制臺輸出 --> 
  8.     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"
  9.         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"
  10.             <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度,%msg:日志消息,%n是換行符--> 
  11.             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> 
  12.         </encoder> 
  13.     </appender> 
  14.  
  15.     <!--文件日志, 按照每天生成日志文件 --> 
  16.     <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"
  17.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
  18.             <!--日志文件輸出的文件名--> 
  19.             <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern> 
  20.             <!--日志文件保留天數(shù)--> 
  21.             <MaxHistory>30</MaxHistory> 
  22.         </rollingPolicy> 
  23.         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"
  24.             <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符--> 
  25.             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> 
  26.         </encoder> 
  27.         <!--日志文件最大的大小--> 
  28.         <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"
  29.             <MaxFileSize>10MB</MaxFileSize> 
  30.         </triggeringPolicy> 
  31.     </appender> 
  32.  
  33.     <!-- show parameters for hibernate sql 專為 Hibernate 定制 --> 
  34.     <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" /> 
  35.     <logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" /> 
  36.     <logger name="org.hibernate.SQL" level="DEBUG" /> 
  37.     <logger name="org.hibernate.engine.QueryParameters" level="DEBUG" /> 
  38.     <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" /> 
  39.  
  40.     <!--myibatis log configure--> 
  41.     <logger name="com.apache.ibatis" level="TRACE"/> 
  42.     <logger name="java.sql.Connection" level="DEBUG"/> 
  43.     <logger name="java.sql.Statement" level="DEBUG"/> 
  44.     <logger name="java.sql.PreparedStatement" level="DEBUG"/> 
  45.  
  46.     <!-- 日志輸出級別 --> 
  47.     <root level="DEBUG"
  48.         <appender-ref ref="STDOUT" /> 
  49.         <appender-ref ref="FILE"/> 
  50.     </root> 
  51. </configuration> 

 

 

 

 

開發(fā)時,小六六自己的一些特殊的用法(實(shí)戰(zhàn))

  • 第一個,就是在日志的時候加上traceId,這樣的好處就是可以把日志收集到日志平臺的時候,可以很好的查到整個流程
  1. <!--輸出到日志平臺 --> 
  2. <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender"
  3.     <graylogHost>${graylogHost}</graylogHost> 
  4.     <graylogPort>${graylogPort}</graylogPort> 
  5.     <encoder class="de.siegmar.logbackgelf.GelfEncoder"
  6.         <originHost>${originHost}</originHost> 
  7.         <includeRawMessage>false</includeRawMessage> 
  8.         <includeMarker>true</includeMarker> 
  9.         <includeMdcData>true</includeMdcData> 
  10.         <includeCallerData>false</includeCallerData> 
  11.         <includeRootCauseData>false</includeRootCauseData> 
  12.         <includeLevelName>true</includeLevelName> 
  13.         <shortPatternLayout class="ch.qos.logback.classic.PatternLayout"
  14.             <pattern>%m%nopex</pattern> 
  15.         </shortPatternLayout> 
  16.         <fullPatternLayout class="ch.qos.logback.classic.PatternLayout"
  17.             <pattern>%m%n</pattern> 
  18.         </fullPatternLayout> 
  19.         <staticField>app_name:${appName}</staticField> 
  20.         <staticField>app_version:${appVersion}</staticField> 
  21.         <staticField>os_arch:${os.arch}</staticField> 
  22.         <staticField>os_name:${os.name}</staticField> 
  23.         <staticField>os_version:${os.version}</staticField> 
  24.         <staticField>uri:%X{uri}</staticField> 
  25.         <staticField>uid:%X{uid}</staticField> 
  26.         <staticField>ip:%X{ip}</staticField> 
  27.         <staticField>traceId:%X{traceId}</staticField> 
  28.     </encoder> 
  29. </appender> 

 

 

其中的原理是通過MDC實(shí)現(xiàn)的

  • 第二個就是,我們一些格式話的日志,做到數(shù)倉里面
  1. <!-- BI操作日志--> 
  2. <appender name="BILogger_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"
  3.    <file>${log.path}/dataBi.dat</file> 
  4.    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
  5.       <fileNamePattern>${log.path}/dataBi.dat.%d{yyyyMMdd}.gz</fileNamePattern> 
  6.       <maxHistory>30</maxHistory> 
  7.    </rollingPolicy> 
  8.    <encoder> 
  9.       <charset>UTF-8</charset> 
  10.       <pattern>%date|%msg%n</pattern> 
  11.    </encoder> 
  12. </appender> 
  13. <!-- DI操作日志--> 
  14. <appender name="DILogger_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"
  15.    <file>${log.path}/dataDi.dat</file> 
  16.    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
  17.       <fileNamePattern>${log.path}/dataDi.dat.%d{yyyyMMdd}.gz</fileNamePattern> 
  18.       <maxHistory>30</maxHistory> 
  19.    </rollingPolicy> 
  20.    <encoder> 
  21.       <charset>UTF-8</charset> 
  22.       <pattern>%date|%msg%n</pattern> 
  23.    </encoder> 
  24. </appender> 

 

 

類似于這種。。

結(jié)束

 

我是小六六,三天打魚,兩天曬網(wǎng),今天就到這了哈!

 

責(zé)任編輯:武曉燕 來源: 六脈神劍的程序人生
相關(guān)推薦

2023-12-22 19:59:15

2021-08-04 16:06:45

DataOps智領(lǐng)云

2022-09-22 09:00:46

CSS單位

2025-04-03 10:56:47

2018-09-28 14:06:25

前端緩存后端

2022-11-06 21:14:02

數(shù)據(jù)驅(qū)動架構(gòu)數(shù)據(jù)

2022-10-20 08:01:23

2023-11-27 17:35:48

ComponentWeb外層

2022-12-01 17:23:45

2021-12-29 18:00:19

無損網(wǎng)絡(luò)網(wǎng)絡(luò)通信網(wǎng)絡(luò)

2022-07-26 00:00:03

語言模型人工智能

2022-07-05 06:30:54

云網(wǎng)絡(luò)網(wǎng)絡(luò)云原生

2023-05-20 17:58:31

低代碼軟件

2023-11-21 09:41:00

緩存策略存儲

2022-03-13 18:27:09

Redis數(shù)據(jù)庫開源

2020-05-15 15:29:36

Stata數(shù)據(jù)分析

2022-05-12 10:53:42

keepalivevrrp協(xié)議

2017-05-04 20:29:12

HTTP服務(wù)器TCP

2025-01-10 08:10:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號