Spring整合logback日志


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文件夾,我們可以查看日志情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM