[springboot]logback日志框架配置

  • logging.file.path将日志输出到指定目录,如果不指定logging.file.name,日志文件的默认名称是spring.log。配置了logging.file.name之后,logging.file.path配置失效。

  • 无论何种设置,Spring Boot都会自动按天分割日志文件,也就是说每天都会自动生成一个新的log文件,而之前的会自动打成GZ压缩包。# 日志文件大小

  • 可以设置logging.file.max-size=10MB分割的每个日志的文件最大容量,超过这个size之后日志继续分隔。

  • 可以设置保留的日志时间logging.file.max-history=10,以天为单位

  • logging.pattern.file输出到文件中的日志的格式

  • logging.pattern.console控制台输出日志的格式,为了在控制台调试时候显示效果更清晰,为日志增加了颜色。red、green等等

日志格式占位符

配合这张图,看一下占位符和logging.pattern.console格式配置之间的关系

在这里插入图片描述

  • %d{HH:mm:ss.SSS}:日志输出时间(red)

  • %thread:输出日志的进程名字,这在Web应用以及异步任务处理中很有用 (green)

  • %-5level:日志级别,并且使用5个字符靠左对齐 (highlight高亮蓝色)

  • %logger:日志输出类的名字 (boldMagenta粗体洋红色)

  • %msg:日志消息 (cyan蓝绿色)

  • %n:平台的换行符

二、使用logback-spring.xml实现日志配置


2.1.需求

一般情况下,使用全局配置文件application.yml或properties进行配置就足够了,如果您的日志输出需求特别复杂,可以考虑使用logback-spring.xml的配置方式。

spring boot 用自带的logback打印日志,多环境打印:

  1. 生产环境输出到控制台和文件,一天一个文件,保留30天.

  2. 开发环境输出到控制台和打印sql(mybatis)输出,生产环境不打印这个信息

  3. 测试环境只输出到控制台。不输出到文件

打印Mybatis SQL,只需要把使用到Mybatis的package的日志级别调整为DEBUG,就可以将SQL打印出来。

2.2.需求实现

因为logback是spring boot的默认日志框架,所以不需要引入maven依赖,直接上logback-spring.xml放在resources下面


<?xml version="1.0" encoding="UTF-8"?>

<configuration>

    <!--引入默认的一些设置-->

    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <!--web信息-->

    <logger name="org.springframework.web" level="info"/>



    <!--写入日志到控制台的appender,用默认的,但是要去掉charset,否则windows下tomcat下乱码-->

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">

        <encoder>

            <pattern>${CONSOLE_LOG_PATTERN}</pattern>

        </encoder>

    </appender>



    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->

    <property name="LOG_PATH" value="D:/logs/boot-launch"/>

    <!--写入日志到文件的appender-->

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <!--日志文件输出的文件名,每天一个文件-->

            <FileNamePattern>${LOG_PATH}.%d{yyyy-MM-dd}.log</FileNamePattern>

            <!--日志文件保留天数-->

            <maxHistory>30</maxHistory>

        </rollingPolicy>

        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>

        </encoder>

        <!--日志文件最大的大小-->

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

            <MaxFileSize>10MB</MaxFileSize>

        </triggeringPolicy>

    </appender>



    <!--异步写日志到文件-->

    <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">

        <discardingThreshold>0</discardingThreshold>

        <queueSize>500</queueSize>

        <appender-ref ref="FILE"/>

    </appender>



    <!--生产环境:打印控制台和输出到文件-->

    <springProfile name="prod">

        <root level="info">

            <appender-ref ref="CONSOLE"/>

            <appender-ref ref="asyncFileAppender"/>

        </root>

    </springProfile>



    <!--开发环境:打印控制台-->

    <springProfile name="dev">

        <!-- 打印sql -->

        <logger name="com.zimug.boot.launch" level="DEBUG"/>

        <root level="DEBUG">

            <appender-ref ref="CONSOLE"/>

        </root>

    </springProfile>



    <!--测试环境:打印控制台-->

    <springProfile name="test">

        <root level="info">

            <appender-ref ref="CONSOLE"/>

        </root>

    </springProfile>

</configuration>



异步日志配置:

  • 异步日志queueSize 默认值256,异步日志队列的容量。

  • discardingThreshold:当异步日志队列的剩余容量小于这个阈值,会丢弃TRACE, DEBUG or INFO级别的日志。如果不希望丢弃日志(即全量保存),那可以设置为0。但是当队列占满后,非阻塞的异步日志会变成阻塞的同步日志。所以在高并发低延迟要求的系统里面针对不重要的日志可以设置discardingThreshold丢弃策略,值大于0。

2.3.测试一下

上面配置完成之后,可以使用如下代码测试一下,是否满足了2.1节中提出的需求。


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;



@RestController

public class LogTestController {


### 最后

给大家送一个小福利

![](https://img-blog.csdnimg.cn/img_convert/92f650a6e4539d9fdb37f6aeb8901332.webp?x-oss-process=image/format,png)

附高清脑图,高清知识点讲解教程,以及一些面试真题及答案解析。送给需要的提升技术、准备面试跳槽、自身职业规划迷茫的朋友们。

![](https://img-blog.csdnimg.cn/img_convert/5d5c12e545ee39db5fa8a0cfc8e35f13.webp?x-oss-process=image/format,png)


j.LoggerFactory;



@RestController

public class LogTestController {


### 最后

给大家送一个小福利

[外链图片转存中...(img-Qz0rfv4J-1718867991260)]

附高清脑图,高清知识点讲解教程,以及一些面试真题及答案解析。送给需要的提升技术、准备面试跳槽、自身职业规划迷茫的朋友们。

[外链图片转存中...(img-ZX8BTNvd-1718867991261)]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值