logback日誌配置
阿新 • • 發佈:2021-06-28
<?xml version="1.0" encoding="UTF-8" ?> <!-- 在此未說明屬性為非必須的,那就表示屬性必須設定 --> <!-- *****************最小配置檔案結構介紹******************************* --> <!-- <configuration> <appender></appender> //存在1或多個,功能指定記錄輸出目的地 <root></root> //最多存在一個,根logger <logger><logger> //存在1或多個,普通logger </configuration> --> <!-- *************************各個標籤詳細介紹********************************** --> <!-- debug(非必須)屬性:true表示輸出logback內部的日誌資訊(不影響配置和級別) ; scan(非必須)屬性:預設為false,true表示掃描配置檔案的變化並自動重新配置,預設每隔1分鐘掃描一次; scanPeriod(非必須)屬性:搭配scan屬性使用,設定掃描的間隔時間 --> <configuration debug="true" scan="true" scanPeriod="1 seconds"> <!-- 用於指定logger上下文名稱,預設為default --> <contextName>logback</contextName> <!-- 設定變數FILE_PATH,用於指定名為FILE的appender的目的檔案存放的目錄 --> <property name="FILE_PATH" value="D:/"></property> <!-- **********************配置TurboFilter型別的過濾器********************************** TurboFilter型別過濾器有三種:這裡使用的是DuplicateMessageFilter 子標籤<cacheSize>:表示內部快取對舊訊息引用的個數上限 子標籤<allowedRepetitions>:表示允許訊息出現的重複次數上限,超過次數上限的記錄請求將被丟棄 --> <!-- 使用自定義的TurboFilter --> <turboFilter class="logback.SampleTurboFilter"> </turboFilter> <!-- 使用DuplicateTurboFilter --> <turboFilter class="ch.qos.logback.classic.turbo.DuplicateMessageFilter"> <allowedRepetitions>1</allowedRepetitions> <cacheSize>20</cacheSize> </turboFilter> <!-- ************************常用的Appender************************************** --> <!-- <appender>標籤包含2個屬性:name、class name屬性:指定appender名稱;class屬性:指定目的地型別 (比如ConsoleAppender、FileAppender等) class屬性的值決定了<appender>標籤包含的子標籤的種類。 --> <!-- 該appender的功能是將記錄資訊以特定格式寫到控制檯 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!--encoder:將事件轉換為字串 預設配置為PatternLayoutEncoder類 encoder用於替代Layout,encoder擴充套件了Layout功能 Layout功能:只負責把事件轉換為字串,但是不能指定何時將記錄寫入到指定目的地 encoder功能:即負責把事件轉換為字串,也可以指定何時將記錄寫入到指定目的地 --> <encoder> <!-- 指定輸出格式 %d{} :表示時間 %thread:請求記錄所在的執行緒名 %-5level:用5位顯示請求級別 %logger{36}:輸出logger名,{36}表示logger名最大佔用的字元位數,{0}表示最簡短logger名(不包含包名)。 --> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern> </encoder> </appender> <!-- 該appender的功能是將記錄資訊以特定格式寫到檔案 --> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <!-- $使用變數FILE_PATH的格式,類似Linux中使用的格式:${FILE_PATH} --> <file>${FILE_PATH}/file.log</file> <encoder> <!-- 指定輸出格式 --> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern> </encoder> </appender> <!-- ***********************以最小窗體為指定的滾動規則的appender***************************** RollingFileAppender型別的appender中必須包含4個子標籤:<file>、<rollingPolicy>、<triggerPolicy>、<encoder> <rollingPolicy>標籤用於指定滾動規則,該標籤有一個屬性class:用於指定實現具體的滾動規則的類。 <triggerPolicy>標籤用於指定發生滾動的條件,該標籤有一個屬性class:用於指定具體滾動條件的類。 <rollingPolicy>和<triggerPolicy>中具體包含哪些子標籤是由class屬性指定的類來決定的,因為不同的類有不同的引數,從而需要不同的標籤來傳參 --> <!-- 該appender的功能是將記錄資訊以特定格式寫到檔案,當檔案達到20MB時,建立以特定規則新的 檔案,之後的記錄會寫到新檔案--> <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 在第一次觸發滾動之前記錄將會寫到該檔案中 --> <file>${FILE_PATH}/rolling.log</file> <!-- 前提條件:class的值為FixedWindowRollingPolicy,表示以最小窗體為指定的滾動規則 RollingPolicy標籤必須子標籤:<fileNamePattern>、<minIndex>、<maxIndex> <fileNamePattern>:表示滾動條件達到後,建立檔名的規則,其中"%i"代表數字1~5。第一次觸發條件,建立檔案rolling1.log,並且記錄開始寫到這個檔案中 <minIndex>與<maxIndex>共同決定了檔案的個數 --> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${FILE_PATH}/rolling%i.log</fileNamePattern> <minIndex>1</minIndex> <maxIndex>5</maxIndex> </rollingPolicy> <!-- <triggeringPolicy>功能:用於限制檔案大小 前提條件:class的值為SizeBasedTriggeringPolicy,表示以檔案大小為觸發條件 只有一個子標籤<maxFileSize>用於指定觸發條件 --> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>20MB</maxFileSize> </triggeringPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern> </encoder> </appender> <!-- *****************************根據時間滾動 為滾動規則和條件的appender(最常用)*********************** --> <!-- 該appender的功能:將記錄資訊以特定格式寫到檔案,當檔案達到20MB時,建立以時間為特定規則新的 檔案,之後的記錄會寫到新檔案, 檔案個數最多維持10個,檔案達到10個 後刪除舊的檔案--> <appender name="time_file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- TimeBasedRollingPolicy實現了RollingPolicy與TriggeringPolicy, 因此只需要<rollingPolicy>標籤,不需要<TriggeringPolicy>標籤 <rollingPolicy>標籤有兩個子標籤:<fileNamePattern>、<maxHistory> <fileNamePattern>:用於指定檔名命名規則 <maxHistory>:保留檔案的個數,超過了就刪除建立時間最久的檔案 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 檔名 --> <fileNamePattern>${FILE_PATH}/java_log/test%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern> <maxHistory>10</maxHistory> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern> </encoder> </appender> <!-- ***********************常規級別過濾器的使用**************************************** 本配置功能:過濾並接受請求級別為debug的請求,對於其他級別請求一律丟棄。 --> <appender name="level_console" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>debug</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern> </encoder> </appender> <!-- ***********************常規臨界值濾器的使用**************************************** 本配置功能:請求級別高於或等於info的請求響應NEUTRAL(進入下一個環節),低於info的級別請求響應DENY(表示丟棄)。 --> <appender name="threshold_console" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>info</level> </filter> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern> </encoder> </appender> <!-- appender的目的地為mysql資料庫 --> <appender name="jdbc" class="ch.qos.logback.classic.db.DBAppender"> <!-- 這裡只使用jdbc中的DriverManager獲得連線,不使用任何資料來源 --> <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> <driverClass>com.mysql.jdbc.Driver</driverClass> <url>jdbc:mysql://localhost:3306/logback?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC</url> <user>root</user> <password>Zp970321</password> </connectionSource> </appender> <!-- ******以下DBAppender型別的appender的目的地為mysql資料庫******** --> <appender name="c3p0_datasource" class="ch.qos.logback.classic.db.DBAppender"> <!-- 這裡使用DataSource獲得連線--> <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource"> <!-- 實現DataSource的資料庫連線池有很多,比如DBCP、c3p0、Druid等 這裡使用的是c3p0 --> <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"> <user>root</user> <password>Zp970321</password> <driverClass>com.mysql.jdbc.Driver</driverClass> <jdbcUrl>jdbc:mysql://localhost:3306/logback?useUnicode=true&characterEncoding=utf8</jdbcUrl> </dataSource> </connectionSource> </appender> <appender name="Druid_datasource" class="ch.qos.logback.classic.db.DBAppender"> <!-- 這裡使用DataSource獲得連線--> <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource"> <!-- 實現DataSource的資料庫連線池有很多,比如DBCP、c3p0、Druid等 這裡使用的是Druid --> <dataSource class="com.alibaba.druid.pool.DruidDataSource"> <username>root</username> <password>Zp970321</password> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <url>jdbc:mysql://localhost:3306/logback?useUnicode=true&characterEncoding=utf8</url> </dataSource> </connectionSource> </appender> <appender name="dbcp_datasource" class="ch.qos.logback.classic.db.DBAppender"> <!-- 這裡使用DataSource獲得連線--> <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource"> <!-- 實現DataSource的資料庫連線池有很多,比如DBCP、c3p0、Druid等 這裡使用的是dbcp --> <dataSource class="org.apache.commons.dbcp.BasicDataSource"> <username>root</username> <password>Zp970321</password> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <url>jdbc:mysql://localhost:3306/logback?useUnicode=true&characterEncoding=utf8</url> </dataSource> </connectionSource> </appender> <!-- level屬性:指定根logger的分配級別 --> <root level="debug"> <!-- ref屬性:指定根logger關聯的appender --> <appender-ref ref="STDOUT"></appender-ref> </root> <!-- name:指定logger名稱;level:指定logger的分配級別;additivity(非必須,預設為true):設定appender疊加性 --> <logger name="demo" level="debug" additivity="false"> <appender-ref ref="FILE"></appender-ref> </logger> <logger name="demo2" level="debug"> <appender-ref ref="rollingFile"></appender-ref> </logger> <logger name="demo3" level="debug"> <appender-ref ref="time_file"></appender-ref> </logger> <logger name="demo4" level="debug" additivity="false"> <appender-ref ref="level_console"></appender-ref> </logger> <logger name="demo5" level="debug" additivity="false"> <appender-ref ref="threshold_console"></appender-ref> </logger> <logger name="demo6" level="debug" additivity="false"> <appender-ref ref="jdbc"></appender-ref> </logger> <logger name="demo7" level="debug" additivity="false"> <appender-ref ref="c3p0_datasource"></appender-ref> </logger> <logger name="demo8" level="debug" additivity="false"> <appender-ref ref="Druid_datasource"></appender-ref> </logger> <logger name="demo9" level="debug" additivity="false"> <appender-ref ref="dbcp_datasource"></appender-ref> </logger> </configuration>