Logback is intended as a successor to the popular log4j project, picking up where log4j leaves off. Logback's architecture is sufficiently generic so as to apply under different circumstances. At present time, logback is divided into three modules, logback-core, logback-classic and logback-access.
The logback-core module lays the groundwork for the other two modules. The logback-classic module can be assimilated to a significantly improved version of log4j. Moreover, logback-classic natively implements the SLF4J API so that you can readily switch back and forth between logback and other logging frameworks such as log4j or java.util.logging (JUL). -- 摘自官網html
翻譯: Logback旨在做爲流行的log4j項目的繼任者. Logback 的體系結構足夠通用,適用於不一樣的環境。目前,logback分爲三個模塊,logback-core,logback-classic和logback-access。logback-core模塊爲其餘兩個模塊奠基了基礎。logback-classic模塊能夠被認爲log4j的改進版本。此外,logback-classic自己實現了所以您能夠隨時在logback和其餘日誌框架之間來回切換。java
Spring Boot在全部內部日誌中使用 Commons Logging,可是默認配置也提供了對經常使用日誌的支持,如: Util Logging,Log4J, Log4J2和Logback。每種Logger均可以經過配置使用控制檯或者文件輸出日誌內容。spring
SLF4J——Simple Logging Facade For Java,它是一個針對於各種Java日誌框架的統一Facade抽象。Java日誌框架衆多——經常使用的有java.util.logging, log4j, logback,commons-logging, Spring框架使用的是Jakarta Commons Logging API (JCL)。而SLF4J定義了統一的日誌抽象接口,而真正的日誌實現則是在運行時決定的——它提供了各種日誌框架的binding。tomcat
Logback是log4j框架的做者開發的新一代日誌框架,它效率更高、可以適應諸多的運行環境,同時自然支持SLF4J。app
默認狀況下,Spring Boot會用Logback來記錄日誌,並用INFO級別輸出到控制檯。在運行應用程序和其餘例子時,你應該已經看到不少INFO級別的日誌了。框架
由於 SpringBoot 默認使用Logback做爲日誌框架, 因此不須要添加額外的依賴包.
直接配置便可.
個人經常使用配置以下:
logback-boot.xmlide
<configuration> <!-- %m輸出的信息,%p日誌級別,%t線程名,%d日期,%c類的全名,%i索引【從數字0開始遞增】,,, --> <!-- appender是configuration的子節點,是負責寫日誌的組件。 --> <!-- ConsoleAppender:把日誌輸出到控制檯 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d %p (%file:%line\)- %m%n</pattern> <!-- 控制檯也要使用UTF-8,不要使用GBK,不然會中文亂碼 --> <charset>UTF-8</charset> </encoder> </appender> <!-- RollingFileAppender:滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其餘文件 --> <!-- 如下的大概意思是:1.先按日期存日誌,日期變了,將前一天的日誌文件名重命名爲XXX%日期%索引,新的日誌仍然是sys.log --> <!-- 2.若是日期沒有發生變化,可是當前日誌的文件大小超過1KB時,對當前日誌進行分割 重命名--> <appender name="syslog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>log/manager_sys.log</File> <!-- rollingPolicy:當發生滾動時,決定 RollingFileAppender 的行爲,涉及文件移動和重命名。 --> <!-- TimeBasedRollingPolicy: 最經常使用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 活動文件的名字會根據fileNamePattern的值,每隔一段時間改變一次 --> <!-- 文件名:log/sys.2017-12-05.0.log --> <fileNamePattern>log/manager_sys.%d.%i.log</fileNamePattern> <!-- 每產生一個日誌文件,該日誌文件的保存期限爲30天 --> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <!-- pattern節點,用來設置日誌的輸入格式 --> <pattern> %d %p (%file:%line\)- %m%n </pattern> <!-- 記錄日誌的編碼 --> <charset>UTF-8</charset> <!-- 此處設置字符集 --> </encoder> </appender> <!-- 控制檯輸出日誌級別 --> <root level="info"> <appender-ref ref="STDOUT"/> </root> <!-- 指定項目中某個包,當有日誌操做行爲時的日誌記錄級別 --> <!-- 級別依次爲【從高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE --> <logger name="com.pinyougou.mapper" level="DEBUG"> <appender-ref ref="syslog"/> </logger> </configuration>
在application.yml指定logback的路徑編碼
server: port: 8088 tomcat: uri-encoding: UTF-8 spring: http: encoding: force: true charset: UTF-8 enabled: true logging: config: classpath:logback-boot.xml
最終效果是按天天/文件大小切割日誌, 入下圖所示:
spa