logback配置檔案
阿新 • • 發佈:2021-12-13
logback 取代 log4j 的理由:Logback的核心重寫了,在一些關鍵執行路徑上效能提升10倍以上。而且logback不僅效能提升了,初始化記憶體載入也更小了。
- log4j定義了8個級別的log(除去OFF和ALL,可以說分為6個級別),優先順序從高到低依次為:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。
springboot整合 logback 的配置檔案:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <include resource="org/springframework/boot/logging/logback/console-appender.xml"/> <property name="LOG_HOME" value="D:\log"/> <property name="LOG_PREFIX" value="log-info"/> <springProperty scope="context" name="appName" source="spring.application.name"/> <!-- %p:輸出優先順序,即DEBUG,INFO,WARN,ERROR,FATAL %r:輸出自應用啟動到輸出該日誌訊息所耗費的毫秒數 %t:輸出產生該日誌事件的執行緒名 %f:輸出日誌訊息所屬的類別的類別名 %c:輸出日誌訊息所屬的類的全名 %d:輸出日誌時間點的日期或時間,指定格式的方式: %d{yyyy-MM-dd HH:mm:ss} %l:輸出日誌事件的發生位置,即輸出日誌訊息的語句在他所在類別的第幾行。 %m:輸出程式碼中指定的訊息,如log(message)中的message %n:輸出一個換行符號 --> <!-- Appender: 設定日誌資訊的去向,常用的有以下幾個 ch.qos.logback.core.ConsoleAppender (控制檯) ch.qos.logback.core.rolling.RollingFileAppender (檔案大小到達指定尺寸的時候產生一個新檔案) ch.qos.logback.core.FileAppender (檔案,不推薦使用) --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--<!– 被寫入的檔名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動建立 –>--> <file>${LOG_HOME}/${LOG_PREFIX}-${appName}-%d{yyyy-MM-dd}.log</file> <!--RollingFileAppender:--> <!--滾動記錄檔案,先將日誌記錄到指定檔案,當符合某個條件時,將日誌記錄到其他檔案。--> <!--<rollingPolicy>:當發生滾動時,決定RollingFileAppender 的行為,涉及檔案移動和重新命名。--> <!--TimeBasedRollingPolicy: 最常用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--<fileNamePattern>: 必要節點,包含檔名及“%d”轉換符, “%d”可以包含一個 java.text.SimpleDateFormat指定的時間格式,如:%d{yyyy-MM}。 如果直接使用 %d,預設格式是 yyyy-MM-dd。RollingFileAppender 的file位元組點可有可無,通過設定file,可以為活動檔案和歸檔檔案指定不同位置,當前日誌總是記錄到file指定的檔案(活動檔案),活動檔案的名字不會改變; 如果沒設定file,活動檔案的名字會根據fileNamePattern的值,每隔一段時間改變一次。“/”或者“\”會被當做目錄分隔符。--> <!--<fileNamePattern>${LOG_HOME}/daily/${appName}-log.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>--> <!--壓縮檔案的儲存路徑以及儲存格式,這裡必須將檔案壓縮,.%i 必須有。如果按上面的配置會報錯--> <fileNamePattern>${LOG_HOME}/daily/${appName}-log.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!--儲存檔案的大小,超過該大小自動建立新檔案。舊檔案壓縮儲存到daily目錄下--> <MaxFileSize>20MB</MaxFileSize> </TimeBasedFileNamingAndTriggeringPolicy> <!--<!– 可選節點,控制保留的歸檔檔案的最大數量,超出數量就刪除舊檔案。假設設定每個月滾動,如果是6,則只儲存最近6天的檔案,刪除之前的舊檔案 包括壓縮檔案 –>--> <!--<!– 每產生一個日誌檔案,該日誌檔案的儲存期限天數 –>--> <maxHistory>15</maxHistory> </rollingPolicy> <!--<encoder>:對記錄事件進行格式化。--> <encoder> <!--格式化輸出:%d表示日期,後面跟時間格式,預設%data{yyyy-MM-dd},%thread表示執行緒名, %msg:日誌訊息,%n是換行符--> <pattern>%d -%X{appId} -%X{requestId} -per %X{perRequestId} %X{userIP} %-4relative [%thread] %-5level %logger{35} - %msg%n </pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d -%X{appId} -%X{requestId} -per %X{perRequestId} %X{userIP} %-4relative [%thread] %-5level %logger{35} - %msg %n </pattern> <charset>UTF-8</charset> </encoder> </appender> <logger name="org.mybatis" level="debug"/> <logger name="org.apache.ibatis" level="debug"/> <springProfile name="local,dev"> <!--root是預設的logger 這裡設定輸出級別是info--> <root level="INFO"> <!--定義了兩個appender,日誌會通過往這兩個appender裡面寫--> <appender-ref ref="FILE"/> <appender-ref ref="STDOUT"/> </root> </springProfile> <springProfile name="test,uat"> <root level="INFO"> <appender-ref ref="FILE"/> <appender-ref ref="STDOUT"/> </root> </springProfile> <springProfile name="prod"> <root level="INFO"> <appender-ref ref="FILE"/> <appender-ref ref="STDOUT"/> </root> </springProfile> </configuration>