SpringBoot记录日志
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; } }