logback常用配置
logback-spring.xml 常用配置
- 以上结构包含三大核心模块:属性定义、Appender 设置、Logger 管理。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration scan="false"><!-- 引入 Spring Boot 默认的 Logback 配置,包含一些基础的属性和宏定义 --><include resource="org/springframework/boot/logging/logback/defaults.xml" /><!-- 应用名称,用于日志文件命名和输出格式中的标识 --><property name="APP_NAME" value="admin"/><!-- 日志文件路径,优先使用环境变量 BUILD_FOLDER,否则默认 logs 目录 --><property name="LOG_FILE" value="${BUILD_FOLDER:-logs}/${APP_NAME}"/><!-- 日志输出格式:时间、级别、应用名、Trace 信息、进程 ID、线程、类名、行号、消息、异常栈 --><property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [${APP_NAME:-},%X{traceId},%X{spanId},%X{parentId}] ${PID:- } --- [%thread] %-40.40class{39} %L: %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} \n"/><!-- 文件 Appender:将日志写入滚动文件 --><appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 日志文件路径,带 .log 后缀 --><file>${LOG_FILE}.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 按日期和索引命名滚动文件 --><fileNamePattern>${LOG_FILE}-%d{yyyyMMdd}.log.%i</fileNamePattern><!-- 单个日志文件最大 100MB --><maxFileSize>100MB</maxFileSize><!-- 保留最近 30 天的日志 --><maxHistory>30</maxHistory><!-- 日志总大小上限 20GB,超过则最旧文件删除 --><totalSizeCap>20GB</totalSizeCap></rollingPolicy><encoder><Pattern>${LOG_PATTERN}</Pattern></encoder></appender><!-- Trace 文件 Appender:专门输出链路追踪(Span)信息 --><appender name="Trace-file" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE}.trace.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE}-%d{yyyyMMdd}.trace.log.%i</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>30</maxHistory><totalSizeCap>20GB</totalSizeCap></rollingPolicy><!-- 仅输出消息内容,一行一条 Span 日志 --><encoder><Pattern>%msg%n</Pattern></encoder></appender><!-- 控制台 Appender:日志也输出到控制台,方便开发和容器化场景 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder></appender><!-- 根日志级别及输出目的地:默认 INFO 级别,发送到控制台和文件 --><root level="info"><appender-ref ref="console"/><appender-ref ref="file"/></root><!-- 针对特定包或组件的日志级别单独控制 --><logger name="org.mybatis.spring" level="INFO"/><logger name="io.netty" level="INFO"/><logger name="com.ulisesbocchio" level="INFO"/><logger name="org.quartz" level="INFO"/><logger name="com.xdr630" level="INFO"/><!-- 独立的链路追踪日志,不继承 root ,只写到 Trace-file --><logger name="brave.Tracer" level="INFO" additivity="false"><appender-ref ref="Trace-file"/></logger>
</configuration>
2. 关键配置解析
- 属性模块:
APP_NAME
与LOG_FILE
:支持环境变量覆盖,适配不同部署环境。LOG_PATTERN
:日志输出格式化,包含时间、线程、类路径、行号及上下文信息。
- 文件滚动策略:
SizeAndTimeBasedRollingPolicy
:结合日期和大小双重切分,单文件最大 100MB;保留 30 天历史,累计上限 20GB。- 适用于高并发、日志量大的生产环境,可避免日志目录无限膨胀。
- 链路追踪分离:
- 通过
<logger name="brave.Tracer" additivity="false">
,将 Sleuth/Brave 生成的 Span 信息写入独立文件,方便链路分析。
- 通过
- 控制台输出:
- 开发和容器化场景下,实时查看日志;通过 UTF-8 编码保证多语言兼容。
3. 模板化与扩展
-
多环境支持:在不同环境的启动脚本中,通过
-DBUILD_FOLDER=/data/logs
、-DAPP_NAME=order-service
动态指定。 -
自定义 Appender:可集成 Logstash、Kafka、Elasticsearch Appender,直连日志收集平台。
-
日志级别调整:在配置中通过
<logger>
针对特定包或类细粒度控制,避免噪声信息。 -
有关Java日志相关的,可以参考专栏:Java日志