LogBack結合SSM或SpringBoot做日誌記錄

1 Logback的引入

前面介紹了Commons Logging和Log4j這一對好基友,它們一個負責充當日誌API,一個負責實現日誌底層,搭配使用非常便於開發。

有的童鞋可能還聽說過SLF4J和Logback。這兩個東東看上去也像日誌,它們又是啥?

其實SLF4J類似於Commons Logging,也是一個日誌接口,而Logback類似於Log4j,是一個日誌的實現。

爲什麼有了Commons Logging和Log4j,又會蹦出來SLF4J和Logback?

這是因爲Java有着非常悠久的開源歷史,不但OpenJDK本身是開源的,而且我們用到的第三方庫,幾乎全部都是開源的。開源生態豐富的一個特定就是,同一個功能,可以找到若干種互相競爭的開源庫。

因爲對Commons Logging的接口不滿意,有人就搞了SLF4J。因爲對Log4j的性能不滿意,有人就搞了Logback。

 

2 Logback的配置文件

在classpath或者src或者resource文件夾下(即源根文件夾下)創建如logback-spring.xml的配置文件,具體代碼如下:

 <?xml version="1.0" encoding="UTF-8"?>
<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%日期%索引,新的日誌仍然是demo.log -->
<!--             2.如果日期沒有發生變化,但是當前日誌的文件大小超過1KB時,對當前日誌進行分割 重命名-->
<appender name="demolog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>log/demo.log</File>
    <!-- rollingPolicy:當發生滾動時,決定 RollingFileAppender 的行爲,涉及文件移動和重命名。 -->
    <!-- TimeBasedRollingPolicy: 最常用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 活動文件的名字會根據fileNamePattern的值,每隔一段時間改變一次 -->
        <!-- 文件名:log/demo.2017-12-05.0.log -->
        <fileNamePattern>log/demo.%d.%i.log</fileNamePattern>
        <!-- 每產生一個日誌文件,該日誌文件的保存期限爲30天 -->
        <maxHistory>30</maxHistory>
        <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <!-- maxFileSize:這是活動文件的大小,默認值是10MB,測試時可改成1KB看效果 -->
            <maxFileSize>1KB</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>
<!-- 指定項目中某個包,當有日誌操作行爲時的日誌記錄級別 -->
<!-- com.liyan爲根包,也就是只要是發生在這個根包下面的所有日誌操作行爲的權限都是DEBUG -->
<!-- 級別依次爲【從高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE  -->
<logger name="com.liyan" level="DEBUG">
    <appender-ref ref="demolog" />
</logger>
</configuration>  

3 加載配置文件

3.1 springboot中

在application.properties文件中加入以下代碼即可

#===========加載日誌配置文件==============
logging.config=classpath:logback-spring.xm

l

3.2 Spring中

在web.xml文件中配置相應的監聽器即可

<context-param>
    <param-name>logbackConfigLocation</param-name>
    <param-value>classpath:logback.xml</param-value>
</context-param>
<listener>
    <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
</listener>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章