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;
}
}
