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>