Logback 是由 SLF4J 做者開發的新一代日誌框架,用於替代 log4j。html
主要特色是效率更高,架構設計夠通用,適用於不一樣的環境。java
Logback 分爲三個模塊:logback-core,logback-classic和logback-access。git
logback-core 模塊是其餘兩個模塊的基礎。github
logback-classic 模塊是 core 的擴展,是log4j的改進版。logback-classic 自己實現了 SLF4J API,所以能夠很容易的在 logback 和其餘日誌框架之間來回切換,例如 log4j、java.util.logging(JUL)。web
logback-access 模塊集成了 Servlet 容器,提供了 HTTP 訪問日誌的功能。spring
官網:http://logback.qos.chsql
中文網:http://www.logback.cnspringboot
github:https://github.com/qos-ch/log...網絡
<?xml version="1.0" encoding="UTF-8"?> <!-- 日誌級別從低到高分爲TRACE < DEBUG < INFO < WARN < ERROR < FATAL,若是設置爲WARN,則低於WARN的信息都不會輸出 --> <!-- scan:當此屬性設置爲true時,配置文件若是發生改變,將會被從新加載,默認值爲true。 --> <!-- scanPeriod:設置監測配置文件是否有修改的時間間隔,若是沒有給出時間單位,默認單位是毫秒。當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘。 --> <!-- debug:當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false。 --> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- 定義日誌根目錄 --> <property name="LOG_PATH" value="/usr/local/log/" /> <!-- 定義應用名稱 --> <property name="APP_NAME" value="springboot-logback" /> <!-- 應用名稱 --> <contextName>${APP_NAME}</contextName> <!-- 引用 Spring Boot 中默認的 logback 配置 --> <!-- <include resource="org/springframework/boot/logging/logback/base.xml" /> --> <!-- 能夠動態修改日誌輸出等級 --> <jmxConfigurator /> <!--輸出到控制檯--> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <!--此日誌appender是爲開發使用,只配置最底級別,控制檯輸出的日誌級別是大於或等於此級別的日誌信息--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>debug</level> </filter> <encoder> <pattern>%d [%t] %5p %c:%L - %m%n</pattern> <!-- 設置字符集 --> <charset>UTF-8</charset> </encoder> </appender> <!-- 時間滾動輸出 level爲 INFO 日誌 --> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${LOG_PATH}${APP_NAME}-info.log</File> <encoder> <pattern>%d [%t] %5p %c:%L - %m%n</pattern> </encoder> <!-- 日誌記錄器的滾動策略,按日期,按大小記錄,日誌按天分類壓縮保存--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <FileNamePattern>${LOG_PATH}${APP_NAME}/info/%d{yyyy-MM-dd}-%i.log.gz </FileNamePattern> <!--日誌文件保留天數--> <MaxHistory>30</MaxHistory> </rollingPolicy> </appender> <!-- 時間滾動輸出 level爲 ERROR 日誌 --> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${LOG_PATH}${APP_NAME}-error.log</File> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>error</level> </filter> <encoder> <pattern>%d [%t] %5p %c:%L - %m%n</pattern> </encoder> <!-- 日誌記錄器的滾動策略,按日期,按大小記錄,日誌按天分類壓縮保存--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>256MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <FileNamePattern>${LOG_PATH}${APP_NAME}/error/%d{yyyy-MM-dd}-%i.log.gz </FileNamePattern> <!--日誌文件保留天數--> <MaxHistory>30</MaxHistory> </rollingPolicy> </appender> <!-- 設置須要打印日誌的包及輸出級別 --> <logger name="org.springframework.web" level="INFO" /> <logger name="cn.zwqh.springboot.controller" level="TRACE" /> <!-- 使用mybatis的時候,sql語句只有在 debug 級別下才會打印 --> <logger name="cn.zwqh.springboot.dao" level="debug" /> <!-- root節點是必選節點,用來指定最基礎的日誌輸出級別,只有一個level屬性 level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 不能設置爲INHERITED或者同義詞NULL。默認是DEBUG 能夠包含零個或多個元素,標識這個appender將會添加到這個logger。 --> <root level="info"> <appender-ref ref="CONSOLE" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="ERROR_FILE" /> </root> </configuration>
使用 groovy 配置須要添加依賴
<dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.4.17</version> </dependency>
import ch.qos.logback.classic.encoder.PatternLayoutEncoder import ch.qos.logback.classic.filter.ThresholdFilter import ch.qos.logback.core.ConsoleAppender import ch.qos.logback.core.rolling.RollingFileAppender import ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP import ch.qos.logback.core.rolling.TimeBasedRollingPolicy import java.nio.charset.Charset import static ch.qos.logback.classic.Level.DEBUG import static ch.qos.logback.classic.Level.ERROR import static ch.qos.logback.classic.Level.INFO import static ch.qos.logback.classic.Level.TRACE scan("60 seconds") def LOG_PATH = "/usr/local/log/" def APP_NAME = "springboot-logback" context.name = "${APP_NAME}" jmxConfigurator() appender("CONSOLE", ConsoleAppender) { filter(ThresholdFilter) { level = DEBUG } encoder(PatternLayoutEncoder) { pattern = "%d [%t] %5p %c:%L - %m%n" charset = Charset.forName("UTF-8") } } appender("INFO_FILE", RollingFileAppender) { file = "${LOG_PATH}${APP_NAME}-info.log" encoder(PatternLayoutEncoder) { pattern = "%d [%t] %5p %c:%L - %m%n" charset = Charset.forName("UTF-8") } rollingPolicy(TimeBasedRollingPolicy) { timeBasedFileNamingAndTriggeringPolicy(SizeAndTimeBasedFNATP) { maxFileSize = "100MB" } fileNamePattern = "${LOG_PATH}${APP_NAME}/info/%d{yyyy-MM-dd}-%i.log.gz" maxHistory = 30 } } appender("ERROR_FILE", RollingFileAppender) { file = "${LOG_PATH}${APP_NAME}-error.log" filter(ThresholdFilter) { level = ERROR } encoder(PatternLayoutEncoder) { pattern = "%d [%t] %5p %c:%L - %m%n" charset = Charset.forName("UTF-8") } rollingPolicy(TimeBasedRollingPolicy) { timeBasedFileNamingAndTriggeringPolicy(SizeAndTimeBasedFNATP) { maxFileSize = "256MB" } fileNamePattern = "${LOG_PATH}${APP_NAME}/error/%d{yyyy-MM-dd}-%i.log.gz" maxHistory = 30 } } logger("org.springframework.web", INFO) logger("cn.zwqh.springboot.controller", TRACE) logger("cn.zwqh.springboot.dao", DEBUG) root(INFO, ["CONSOLE", "INFO_FILE", "ERROR_FILE"])
詳細的 logback.groovy 語法能夠參考 http://logback.qos.ch/manual/... 。logback 也提供了 logback.xml 轉 logback.groovy 的在線工具,地址: http://logback.qos.ch/transla... (include 標籤未做解析,因此轉換前把該標籤去除,不然會報錯)
配置文件的根節點,主要包含如下三個屬性:mybatis
設置日誌上下文名稱,後面輸出格式中能夠經過定義 %contextName 來打印日誌上下文名稱。
配置文件的變量定義,name 表明變量的名稱,value 表明變量定義的值。經過定義的值會被插入到logger上下文中。定義變量後,可使「${name}」來使用變量。
開啓 JMX 的功能,能夠從默認配置文件,指定文件或URL從新配置登陸,列出記錄器並修改記錄器級別。
JMX(Java Management Extensions,即 Java 管理擴展)是一個爲應用程序、設備、系統等植入管理功能的框架。JMX 能夠跨越一系列異構操做系統平臺、系統體系結構和網絡傳輸協議,靈活的開發無縫集成的系統、網絡和服務管理應用。相關文檔: http://logback.qos.ch/manual/...
日誌輸出組件,主要負責日誌的輸出以及格式化日誌。經常使用的屬性有name和class。
appender的具體實現類:
Logback 定義的日誌打印級別的過濾器。能夠過濾掉指定級別如下的日誌不輸出到文件。
表示對日誌進行編碼。
日誌記錄器的滾動策略。
用來設置某一個包或者具體的某一個類的日誌打印級別、以及指定<appender>。
使用mybatis的時候,sql語句只有在 debug 級別下才會打印
必選節點,用來指定最基礎的日誌輸出級別,只有一個level屬性
level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能設置爲INHERITED或者同義詞NULL。默認是 DEBUG 能夠包含零個或多個元素,標識這個appender將會添加到這個logger。
非特殊說明,本文版權歸 朝霧輕寒 全部,轉載請註明出處.
原文標題:Spring Boot 2.X(十四):日誌功能 Logback
原文地址: https://www.zwqh.top/article/info/23
若是文章對您有幫助,請掃碼關注下個人公衆號,文章持續更新中...