Logback 常用配置详解

发布于:2024-11-03 ⋅ 阅读:(5) ⋅ 点赞:(0)

1. 配置文件解析

Logback 是 Spring Boot 默认使用的日志框架,Logback 配置主要包含 8 大元素

1.1 configuration

Logback 配置文件的根元素,它包含所有的配置信息

1.2 appender

定义一个 Appender,即日志输出的目的地,如控制器或文件

该元素有一个必须的 name 属性,和一个 class 属性,指定 Appender 的实现类

1.3 encoder

定义日志输出格式,它包含在 Appender 元素中,可以使用 pattern 属性定义输出格式,也可以使用 layout 子元素指定一个 Layout 类

1.4 logger

定义一个 Logger,它有一个 name 属性,表示 Logger 的名称,也可以使用通配符匹配多个 Logger

1.5 root

定义根 Logger,通常用于设置默认的日志级别和输出目的地

1.6 level

定义日志级别,可以包含在 Logger 或 Appender 元素中

Logback 定义了七个日志级别,按照从低到高的顺序,分别是 TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF

1.7 filter

定义一个过滤器,可以用来过滤日志信息,可以包含在 Logger 或 Appender 元素中

1.8 rollingPolicy 和 triggeringPolicy

定义 Appender 的滚动策略和触发策略

  • 滚动策略:指定何时创建新的日志文件
  • 触发策略:指定何时触发滚动策略

2. 示例

这个配置文件定义了两个 Appender:一个输出到控制台,另一个输出到日志文件。

日志文件使用了时间滚动和文件大小限制策略,同时也定义了一个 Logger 和根 Logger 的输出目的地和日志级别。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
    <contextName>logback</contextName>

    <!-- 定义日志变量-->
    <property name="log.path" value="D:\\logback.log" />

    <!--日志输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <!-- 日志输出到文件 -->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
        </rollingPolicy>

        <encoder>
            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
            </pattern>
        </encoder>
    </appender>

    <!-- 根日志输出级别-->
    <root level="debug">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>

    <!-- 指定包日志输出级别-->
    <logger name="com.binge" level="debug" />

</configuration>