一、導入Slf4J依賴
因spring-boot-starter中已存在
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中配置的日志輸出路徑中可找到對應的輸出日志
使用者可在logback中配置輸出級别,篩選需要輸出到檔案中的資訊