Spring整合logback日志
SLF4J簡介
SLF4J(Simple Logging Facade for Java)是一種日志規范,類似於JDBC,我們常用的日志log4j、logback等都實現了這個規范,所以我們可以直接使用SLF4J的規范來使用日志。
logback和log4j
它們是同一個作者開發的,logback是重新編寫的內核,在一些關鍵執行的路徑上提升了10倍以上。它也支持了一些新的特性。
logback的使用
引入依賴
前面說了,logback是遵循slf4j規范的,所以要先引入其依賴.其實logback內部已經關聯了slf4j的jar包,其實只需要依賴logback的依賴!
<!--日志相關-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
為了方便操作,我們還可以使用lombok的依賴,注意使用lombok的時候需要安裝插件並且啟用注解!
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
掃描xml
盡量的在pom的build標簽中加入如下內容,以掃描到logback.xml文件。
<!--掃描全局xml-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
引入xml
在resource目錄下創建名為logback.xml的文件,復制如下內容。
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定義日志文件的存儲地址 logs為當前項目的logs目錄 還可以設置為../logs -->
<property name="LOG_HOME" value="logs" />
<!--控制台日志, 控制台輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度,%msg:日志消息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!--文件日志, 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件輸出的文件名-->
<FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天數-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- show parameters for hibernate sql 專為 Hibernate 定制 -->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<!-- 日志輸出級別 -->
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE"/>
</root>
</configuration>
使用
package cn.rayfoo.test;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
/**
* @Author: rayfoo@qq.com
* @Date: 2020/7/16 5:37 下午
* @Description:
*/
@Slf4j
public class TestApp {
@Test
public void slf4jTest(){
log.trace("trace");
log.info("info");
log.debug("info");
log.error("info");
}
}
上述是使用lombok的插件來使用,如果沒有lombok也可以使用如下的方式
Logger logger = LoggerFactory.getLogger(當前類.class);
此時,控制台可以打印日志的信息,項目的根目錄下也出現了logs文件夾,我們可以查看日志情況。