SpringBoot記錄日志
制作人:全心全意
使用logback記錄日志
springboot已經默認整合好了logback,日志輸出文件在當前項目路徑log目錄下
引入依賴包
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
logback配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 本文主要輸出日志為控制台日志,系統日志,sql日志,異常日志 -->
<!-- %m輸出的信息,%p日志級別,%t線程名,%d日期,%c類的全名,,, -->
<!-- 控制台 -->
<appender name="console"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %p (%file:%line\)- %m%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 系統info級別日志 -->
<!-- <File> 日志目錄,沒有會自動創建 -->
<!-- <rollingPolicy>日志策略,每天建立一個日志文件,或者當天的日志文件超過64MB時 -->
<!-- encoder 日志編碼及輸出格式 -->
<appender name="fileLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/file/fileLog.log</File>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/file/fileLog.log.%d.%i</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>64MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>
%d %p (%file:%line\)- %m%n
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- sql日志 -->
<appender name="sqlFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/sql/sqlFile.log</File>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/sql/sqlFile.log.%d.%i</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>64MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- 用來設置日志的輸入格式 -->
<pattern>
%d %p (%file:%line\)- %m%n
</pattern>
<charset>UTF-8</charset>
<!-- 此處設置字符集 -->
</encoder>
</appender>
<!-- 異常日志 -->
<appender name="errorFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/error/errorFile.log</File>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/error/errorFile.log.%d.%i</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>64 MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- 用來設置日志的輸入格式 -->
<pattern>
%d %p (%file:%line\)- %m%n
</pattern>
<charset>UTF-8</charset>
<!-- 此處設置字符集 -->
</encoder>
<!-- 日志都在這里過濾error 使用try{} catch(Exception e){}的異常無法寫入日志 -->
<!-- 可以在catch中調用logger.error()方法手動寫入日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 日志輸出級別 -->
<!-- ALL\DEBUG\INFO\WARN\ERROR\FATAL\OFF -->
<!-- 打印info級別日志,分別在控制台,fileLog,errorFile輸出 -->
<!-- 異常日志在上面由過濾器過濾出ERROR日志打印 -->
<root level="INFO">
<appender-ref ref="fileLog" />
<appender-ref ref="console" />
<appender-ref ref="errorFile" />
</root>
<!-- 打印sql至sqlFile文件 -->
<logger name="com.dolphin.mapper" level="DEBUG"
additivity="false">
<appender-ref ref="console" />
<appender-ref ref="sqlFile" />
</logger>
</configuration>
引入logback配置文件(application.yml)
logging: config: classpath:log/logback.xml
測試日志接口
package com.zq.main.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j //日志的注解
public class Mylogback {
@RequestMapping("/getlog")
public String getlog(String name,Integer age) {
log.info("name:{},age:{}",name,age);
return "111";
}
}
日志級別
ALL:最低等級,用於打開所有日志記錄
DEBUG:主要用於開發過程中打印一些運行信息
INFO:用於生產環境輸出程序運行的一些重要信息,但是不能濫用,避免打印過多的日志
ERROR:打印錯誤和異常信息(不影響系統繼續運行的異常和錯誤),如果不想輸出太多日志,可以使用此級別
OFF:最高級別,用於關閉所有日志記錄
springboot使用log4j記錄日志
機制:如果一條日志信息的級別大於等於配置文件的級別,就記錄。
trace:追蹤,就是程序推進一下,可以寫個trace輸出
debug:調試,一般作為最低級別,trace基本不用
info:輸出重要信息,使用較多
warn:警告,有些信息不是錯誤信息,但也要給程序員一些提示
error:錯誤信息,用的很多
fatal:致命錯誤
輸出源:
CONSOLE(輸出到控制台)
FILE(輸出到文件)
格式:
SimpleLayout:以簡單的形式顯示
HTMLLayout:以HTML表格顯示
引入依賴包
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <!-- 排除自帶的logback依賴 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- springboot-log4j --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> <version>1.3.8.RELEASE</version> </dependency>
新建log4j.properties配置文件
log4j.rootLogger=DEBUG,error,CONSOLE,info
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold=info
log4j.appender.info.append=true
log4j.appender.info.File=F:/log/info.log #INFO重要輸出日志存放位置
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold=error
log4j.appender.error.append=true
log4j.appender.error.File=F:/log/error.log #錯誤日志存放位置
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold=DEBUG
log4j.appender.DEBUG.append=true
log4j.appender.DEBUG.File=F:/log/DEBUG.log #DEBUG日志存放位置
編輯配置文件application.yml引入log4j配置
logging: config: classpath:log4j.properties
測試日志接口
package com.zq.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j // 日志的注解
public class Mylogback {
@RequestMapping("/getlog4j")
public String getlog4j(String userName, Integer age) {
log.info("name:{},age:{}", userName, age);
return userName;
}
}
