SpringBoot使用logback记录日志

本文详细介绍了如何使用Logback配置日志输出格式,并展示了如何在Slf4j中创建并打印不同级别的日志,重点讲解了文件拆分和异步日志处理。通过Slf4jTest示例,演示了在Java应用中的日志操作。
摘要由CSDN通过智能技术生成
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--日志输出格式:
        %-5level                      日志级别(5个字符)
        %d{yyyy-MM-dd HH:mm:ss.SSS}   日期
        %c                            类的完整名称
        %M                            方法名
        %L                            行号(尽量别打印,影响性能)
        %thread                       线程名称
        %m 或者 %msg                   为信息
        %n                            换行
     -->
    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M [%thread]  %msg %n"/>
    <property name="log_dir" value="D:/logs/logback"/>
    <!--Appender:
        设置日志信息的去向,常用的有以下几个
        ch.qos.logback.core.ConsoleAppender (控制台)
        ch.qos.logback.core.FileAppender (文件)
        ch.qos.logback.core.rolling.RollingFileAppender (文件大小到达指定尺 寸的时候产生一个新文件)
    -->
    <!--控制台打印-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--输出流对象 默认 System.out 改为 System.err 日志文字颜色会变-->
        <target>System.out</target>
        <!--日志格式配置-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>
    <!--文件输出-->
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <file>${log_dir}/logback.log</file>
        <!--日志格式配置-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>
    <!--日志拆分 和 文档压缩-->
    <appender name="rollFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log_dir}/roll_logback.log</file>
        <!--日志格式配置-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
        <!--拆分规则。当日志文件过大时,拆分打包成如下文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--按照时间和压缩格式声明拆分的文件名-->
            <fileNamePattern>${log_dir}/rolling.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <!--按照文件大小拆分-->
            <maxFileSize>1MB</maxFileSize>
        </rollingPolicy>
        <!--日志过滤规则。只接收 level 等级的日志-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!--异步日志-->
    <appender name="asyncRollFile" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="rollFile"/>
    </appender>
    <!--
        用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。
        <logger>仅有一个name属性,一个可选的level和一个可选的addtivity属性
        name:用来指定受此logger约束的某一个包或者具体的某一个类。
        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 如果未设置此属性,那么当前logger将会继承上级的级别。
        additivity: 是否向上级loger传递打印信息。默认是true。
        <logger>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个 logger
     -->
    <!--
        <root>也是<logger>元素,但是它是根logger。
        默认debug level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
        <root>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个 logger。
     -->
    <root level="info">
        <appender-ref ref="console"/>
<!--        <appender-ref ref="file"/>-->
        <appender-ref ref="rollFile"/>
<!--        <appender-ref ref="asyncRollFile"/>-->
    </root>
</configuration>

测试

package com.yyj.controller;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author asus
 * @version Copyright by
 * @date 2022/6/18
 * @describe:
 */
public class Slf4jTest {
    //定义日志对象
    public final static Logger LOGGER = LoggerFactory.getLogger(Slf4jTest.class);

    @Test
    public void testSlf4j() {
        for (int i = 0; i < 20000; i++) {
        //打印日志信息
            LOGGER.error("error "+i);
            LOGGER.warn("warn "+i);
            LOGGER.info("info "+i);
            LOGGER.debug("debug "+i);
            LOGGER.trace("trace "+i);
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值