1. SpringBoot学习笔记十三:springBoot的日志框架学习
1.1. 常用的日志框架
- slf4j,log4j,logback,common-logging等
- logback是基于log4j基础进行改良的,不能单独使用,推荐配合SLF4j来使用logback,当前分成三个模块:logback-core,logback-classic和logback-access;其中logback-core是其他两个模块的基础模块。
- logback的核心对象
logger:日志记录器
Appender:指定日志输出的目的地,目的地可以是控制台,文件
Layout:日志的布局,格式化日志的输出。
- 日志的级别:Debug<INFO<WARN<ERROR
- log4j.properties日志转logback.xml,支持properties转成logback.xml
log4j.properties日志转logback.xml
- 默认的logback日志内容
1、日志生成日期
2、日志级别
3、processId:进程id
4、分隔符
5、线程名称
6、那个类输出的日志
7、日志信息
1.2. SpringBoot2.x自带的logBack日志
- 创建logback-spring.xml配置文件在资源文件夹里面
- 将log4j.properties转成logback.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="consoleApp" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout"><!-- 配置布局 -->
<pattern><!-- 输出日志的匹配,包含正则匹配 -->
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</layout>
</appender>
<appender name="fileInfoApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤器,只保存info级别的日志 -->
<level>ERROR</level><!-- Error级别 -->
<onMatch>DENY</onMatch><!-- deny,不进行记录 -->
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder><!-- 与Layout一样,日志输出布局配置 -->
<pattern>
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</encoder>
<!-- 滚动策略,根据时间日期滚动的 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路径 -->
<fileNamePattern>app_log/log/app.info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="fileErrorApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level><!-- 不写其他表示只接受error级别配置 -->
</filter>
<encoder>
<pattern>
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</encoder>
<!-- 设置滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路径 -->
<fileNamePattern>app_log/log/app.err.%d.log</fileNamePattern>
<!-- 控制保留的归档文件的最大数量,超出数量就删除旧文件,假设设置每个月滚动,
且<maxHistory> 是1,则只保存最近1个月的文件,删除之前的旧文件 -->
<MaxHistory>1</MaxHistory>
</rollingPolicy>
</appender>
<root level="INFO"> <!-- 控制日志输出级别 -->
<appender-ref ref="consoleApp"/> <!-- 这个输出到控制台consoleApp的appender级别中去 -->
<appender-ref ref="fileInfoApp"/><!-- 输出到文件,并且以滚动的格式,根据天、或者小时进行滚动 -->
<appender-ref ref="fileErrorApp"/>
</root>
</configuration>
- 测试日志接口
private Logger logger=LoggerFactory.getLogger(this.getClass());
@GetMapping("log")
public Object testlog() {
logger.debug("this is debug");
logger.info("this is info");
logger.warn("this is warn");
logger.error("this is error");
return JsonData.buildSuccess();
}
- 注意导入的包
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;