SpringBoot学习笔记十三:springBoot的日志框架学习

1. SpringBoot学习笔记十三:springBoot的日志框架学习

1.1. 常用的日志框架

  1. slf4j,log4j,logback,common-logging等
  2. logback是基于log4j基础进行改良的,不能单独使用,推荐配合SLF4j来使用logback,当前分成三个模块:logback-core,logback-classic和logback-access;其中logback-core是其他两个模块的基础模块。
  3. logback的核心对象

logger:日志记录器

Appender:指定日志输出的目的地,目的地可以是控制台,文件

Layout:日志的布局,格式化日志的输出。

  1. 日志的级别:Debug<INFO<WARN<ERROR
  2. log4j.properties日志转logback.xml,支持properties转成logback.xml

log4j.properties日志转logback.xml

  1. 默认的logback日志内容

1、日志生成日期

2、日志级别

3、processId:进程id

4、分隔符

5、线程名称

6、那个类输出的日志

7、日志信息

1.2. SpringBoot2.x自带的logBack日志

  1. 创建logback-spring.xml配置文件在资源文件夹里面
  2. 将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>
  1. 测试日志接口
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();
	}
  1. 注意导入的包
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
发布了201 篇原创文章 · 获赞 198 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/qq_33322074/article/details/104065254