日誌記錄:LogBack結合SSM或SpringBoot

1 Logback的引入

所謂日誌框架是一套能實現日誌輸出的工具包,而所有能夠描述系統運行狀態的事件都可以算作日誌。

目前常用的日誌框架包括Log4j,Log4j 2,Commons Logging,Slf4j,Logback,Jul等等,但是由於種種原因,比較常用的組合使用方式是Slf4j與Logback組合使用,Commons Logging與Log4j組合使用。

Commons Logging和Slf4j是日誌門面。log4j和Logback則是具體的日誌實現方案。可以簡單的理解爲接口與接口的實現,調用這只需要關注接口而無需關注具體的實現,做到解耦。

註解:門面模式是軟件工程中常用的一種軟件設計模式,也被稱爲正面模式、外觀模式。它爲子系統中的一組接口提供一個統一的高層接口,使得子系統更容易使用。

 

爲什麼我和spring選擇了SLF4J和Logback?

就因爲對Commons Logging的接口不滿意,有人就搞了Slf4j。因爲對Log4j的性能不滿意,有人就搞了Logback。而這裏的有個人指的就是就是Log4j的作者Ceki。他嫌Log4j是在太懶了,於是離開Apache公司後就開發了Slf4j和Logback。確實SLF4J和Logback的組合也更受大衆喜愛。

2 導入jar包

直接導入logback

<!-- logbac的所有jar包-->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

或者如果是springboot項目的話,只要有日誌記錄的起步依賴就行了,如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

3 Logback配置文件

在classpath或者src或者resource文件夾下(即源根文件夾下)創建如logback-spring.xml的配置文件。我們針對info和error信息安全程度的不同,將兩種信息分別輸出到不同的日誌文件中,且每天會重新增加一個文件記錄對應日誌,達到滾動效果。其餘配置見博客——看完這個不會配置logback,請你吃瓜!

具體代碼如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- 控制檯日誌輸出格式配置-->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </layout>
    </appender>

    <!-- INFO級別的日誌輸出到文件的日誌-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 設置不輸出ERROR級別的日誌 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>

        <encoder>
            <!-- pattern節點,用來設置日誌的輸出格式 -->
            <pattern>%d{HH:mm:ss.SSS} [%level] [%thread] %logger{60} [%file : %line] %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 輸出路徑-->
            <fileNamePattern>log/info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <!-- ERROR級別的日誌輸出到文件的日誌-->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 設置只輸出ERROR級別的日誌 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>

        <encoder>
            <!-- pattern節點,用來設置日誌的輸出格式 -->
            <pattern>%d{HH:mm:ss.SSS} [%level] [%thread] %logger{60} [%file : %line] %msg%n</pattern>
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 輸出路徑-->
            <fileNamePattern>log/error.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <!-- 將這些配置應用在根目錄下,也就是對全局應用 -->
    <root level="info">
        <appender-ref ref="consoleLog"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>

    </root>
</configuration>



4 加載配置文件

4.1 springboot中

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

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

g.xml

4.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>

 

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