SpringBoot实战(04):整合Logback日志框架

一、前言

日志是追溯系统使用记录、跟踪问题的的依据,是系统不可缺少的重要组成部分。在SpringBoot中,默认使用的是Logback日志。如果创建一个项目没有引用其他的日志框架的化。默认使用Logback打印日志,下面简单介绍一下我们如何使用Logback日志框架。

二、默认日志格式

创建一个新项目,直接运行SpringBoot项目后,在控制台中就会生成Logback默认的日志格式,下面简单介绍一下系统默认的打印格式。
在这里插入图片描述

  1. 时间日期:日志打印时间,精确到毫秒。
  2. 日志级别:ERROR,WARN,INFO,DEBUG,TRACE。
  3. 进程ID:进程ID指的是当前应用对应的PID。
  4. 分隔符:–标识实际日志的开始。
  5. 线程名:方括号括起来(可能会阶段控制台输出)
  6. Logger名:通常使用源代码的类名
  7. 日志内容:日志正文

三、配置日志文件

虽然SpringBoot项目配置的默认格式信息非常详细,而且我们正式的项目设置的日志格式也差不太多,但是默认配置的日志信息,只会将日志默认输出到控制台,并不会将日志写入到日志文件中。实际的项目中,肯定是要通过日志文件来分析问题的。所以需要我们自定义日志配置。

1.添加日志配置文件

SpringBoot默认支持使用xml自定义日志格式,只需要在src/main/resources文件夹下定义一个logback-spring.xml
在这里插入图片描述

SpringBoot官网推荐优先使用带有-spring的文件名作为你的日志配置,如果命名为 logback-spring.xml,就可以在日志输出的时候引入一些SpringBoot特有的配置项。当然也可以支持自定义日志配置,在application.yml 文件中配置logging.config=classpath:logback-config.xml,就会去读取src/main/resources文件夹下的 logback-config.xml

2.自定义日志格式

通过上述方式我们添加了配置文件,可以在 logback-config.xml 中添加如下内容。完整的文件内容可以去第4点获取。

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!--输出日志级别-->
    <root level="error">
        <appender-ref ref="console"/>
        <appender-ref ref="logFile" />
    </root>
</configuration>
  • configuration标签为根节点,包含下面三个属性:

    • scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
    • scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
    • debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
  • contextName标签用来设置上下文名称,每个logger都关联到logger上下文,默认上下文名称为default。但可以使用contextName设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。

  • appender:负责写日志的组件

    • class="ch.qos.logback.core.ConsoleAppender"表示设置控制台的
    • class="ch.qos.logback.core.rolling.RollingFileAppender"表示按天写入日志文件
  • pattern标签用于设置每行日志的格式,信息如下:

    • %d :输出日志时间,可以使用%d{HH:mm:ss}对日志进行格式化。
    • %thread:输出日志的进程名称。
    • %-5level:日志级别,并且使用5个字符靠左对齐,也可以使用%p输出日志级别。
    • %logger{36}:打印日志的输出者,一般打印那个类打印的日志。
    • %msg:日志信息
    • %n:换行
    • %c:用来在日志上输出类的全名。

3.日志的归档和清理

日志已经有了,但是随着时间推移, 所有的日志放在一个文件也不行,一般来说,生产日志需要按日期进行存档,且对于比较久的日志要进行迁移或者删除,避免出现磁盘占满影响系统正常运行。下面介绍一下,日志的归档和清理。

    <!--按天生成日志-->
    <appender name="logFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <Prudent>true</Prudent>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件命名-->
            <FileNamePattern>
                applog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log
            </FileNamePattern>
            <!--保存最近30天的日志,防止磁盘被占满-->
            <maxHistroy>30</maxHistroy>
            <!--设置最大日志文件大小-->
            <maxFileSize>500MB</maxFileSize>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} -%msg%n
            </Pattern>
        </layout>
    </appender>

标签说明:

  • FileNamePattern:日志文件位置。
  • maxHistroy:设置最大的日志保存时间,单位为天。
  • maxFileSize:设置最大的日志文件大小,如果超过就会生成新的文件。

4.logback-spring.xml文件

下面是我的项目中使用的一个日志配置文件,大家可以复制到项目中直接使用。

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--按天生成日志-->
    <appender name="logFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <Prudent>true</Prudent>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件命名-->
            <FileNamePattern>
                applog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.%i.log
            </FileNamePattern>
            <!--保存最近10天的日志,防止磁盘被占满-->
            <maxHistory>10</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--设置最大日志文件大小-->
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>

        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} -%msg%n
            </Pattern>
        </layout>
    </appender>

    <!--输出指定包文件的日志-->
    <logger name="com.ming" additivity="false">
        <appender-ref ref="console"/>
        <appender-ref ref="logFile" />
    </logger>

    <!--日志处理级别-->
    <root level="error">
        <appender-ref ref="console"/>
        <appender-ref ref="logFile" />
    </root>

</configuration>

四、打印sql脚本

开发测试时,我们常常需要查看被执行的SQL脚本以及输入的参数信息。默认情况是不打印的,如果需要打印,可以在 application.yml 配置文件中

logging:
  level:
    root: info
    com.ming.upms.dao: debug # 改成你的mapper文件所在包路径

五、相关链接

博客的内容是根据平时在写项目代码后的知识点总结。既是对自己的一个总结,也是给大家的一点小小分享,希望大家多多支持!如有问题希望大家多多指教。谢谢!

其他博客链接:

SpringBoot实战(01):创建一个SpringBoot项目
SpringBoot实战(02):整合jUnit测试框架
SpringBoot实战(03):全局异常处理ErrorController

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jie_ming514

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值