SpringBoot使用logback分类收集日记

将所有日志都存储在一个文件中既不利于排查问题,同时文件大小也会随着应用的运行越来越大,正确的做法应该是将error日志和其他日志分开,并且不同级别的日志根据时间进行记录存储

依赖

SpringBoot框架内置了logback和slf4j框架,所以不需要在添加任何相关依赖避免冲突

配置文件logback-spring.xml

分类收集日志的核心就是日志的配置文件了,logback框架会默认加载classpath下命名为logback-springlogback的配置文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <property resource="logback.properties"/>
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
        </layout>
    </appender>
    <!--获取比info级别高(包括info级别)但除error级别的日志-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
        </encoder>

        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>${LOG_INFO_HOME}//%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>${LOG_ERROR_HOME}//%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>
    <root level="info">
        <appender-ref ref="consoleLog" />
        <appender-ref ref="fileInfoLog" />
        <appender-ref ref="fileErrorLog" />
    </root>
</configuration>

部分标签说明

  • <root>标签,必填标签,用来指定最基础的日志输出级别
    • 标签,添加append
  • <append>标签,通过使用该标签指定日志的收集策略
    • name属性指定appender 命名
    • class属性指定输出策略,通常有两种,控制台输出和文件输出,文件输出就是将日志进行一个持久化
  • <filter>标签,通过使用该标签指定过滤策略
    • <level>标签指定过滤的类型
  • <encoder>标签,使用该标签下的<pattern>标签指定日志输出格式
  • <rollingPolicy>标签指定收集策略,比如基于时间进行收集
    • <fileNamePattern>标签指定生成日志保存地址

在这里插入图片描述

最后附项目完整代码: https://github.com/TiantianUpup/springboot-log
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot使用Logback作为默认的日志框架。Logback是一个功能强大的日志框架,它支持多种输出格式和多种日志级别,并且可以通过配置文件进行灵活的配置。 要使用Logback,只需要在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> ``` 然后,在src/main/resources目录下创建logback.xml文件,进行日志配置。例如: ``` <configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> </configuration> ``` 这个配置文件定义了一个名为CONSOLE的输出器,它将日志输出到控制台。日志格式为时间、线程名、日志级别、类名和日志信息。日志级别为INFO,表示只输出INFO级别及以上的日志。 除了控制台输出,Logback还支持输出到文件、数据库等多种方式。可以根据具体需求进行配置。 最后,在代码中使用Logger记录日志即可: ``` import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyService { private static final Logger logger = LoggerFactory.getLogger(MyService.class); public void doSomething() { logger.info("Doing something..."); } } ``` 这样,当MyService的doSomething方法被调用时,日志信息将被记录下来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值