天天看點

SpringBoot內建Slf4J+logback

一、導入Slf4J依賴

因spring-boot-starter中已存在​

​slf4j​

​和​

​logback​

​依賴
SpringBoot內建Slf4J+logback
是以隻需添加​

​lombok​

​依賴(使用@Slf4J注解)

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.0</version>
</dependency>
      

二、編寫logback檔案

logback啟動時會在資源路徑下順序讀取 ​

​logback.configurationFile​

​,​

​logback.groovy​

​logback-test.xml​

​logback.xml​

​等配置檔案,對日志格式輸出路徑等資訊進行配置,如存在則使用該檔案,如不存在則會使用預設配置。也可自定義檔案名在yml中的logging.config中進行自定義配置。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定義目前項目名-->
    <property name="PROJECT_NAME" value="MYAPP"/>
    <!--定義日志檔案的存儲位址 勿在 LogBack 的配置中使用相對路徑-->
    <property name="LOG_HOME" value="W:/slf4j/"/>
    <!-- 定義日志格式  -->
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%-30.30logger{30}] %msg%n"/>
    <!-- 控制台日志 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級别從左顯示5個字元寬度%msg:日志消息,%n是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!--日志檔案 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志檔案輸出的檔案名-->
            <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}_LOG_%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志檔案保留天數-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級别從左顯示5個字元寬度%msg:日志消息,%n是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!--日志檔案最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
        <!--日志過濾級别-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
    </appender>
    <!-- 日志輸出級别 -->
    <logger name="org.springframework" level="INFO"/>
    <logger name="com.hl.magic" level="INFO"/>
    <!--用來指定最基礎的日志輸出級别并指定<appender>,可以了解為根logger-->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>
      

三、使用

在需要日志記錄的類上打上@Slf4j注解,使用log進行日志輸出。

@Slf4j是lombok提供的注解,相當于private final Logger log = LoggerFactory.getLogger(目前類名.class),如果不使用lombok也可自行通過LoggerFactory生成logger

日志級别

​error​

​: 使用者程式報錯,必須解決的時候使用此級别列印日志。

​warn​

​:警告,不會影響程式的運作,但是值得注意。

​info​

​: 一般處理業務邏輯的時候使用,就跟 system.err列印一樣,用于說明此處是幹什麼的。

​debug​

​: 一般放于程式的某個關鍵點的地方,用于列印一個變量值或者一個方法傳回的資訊之類的資訊

​trace​

​: 一般不會使用,在日志裡邊也不會列印出來,最低的一個日志級别。

@SpringBootApplication
@EnableScheduling
@Slf4j
public class RunnerTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(RunnerTestApplication.class, args);
        log.info("----------SpringBoot啟動------------");
    }

    @Scheduled(fixedRate = 1000)
    public static void cron(){
        log.info("--------------scheduling-"+new Date()+"------------");
    }
}

      

在使用者logback中配置的日志輸出路徑中可找到對應的輸出日志

SpringBoot內建Slf4J+logback

使用者可在logback中配置輸出級别,篩選需要輸出到檔案中的資訊

SpringBoot內建Slf4J+logback