2025.6.23

这个配置段定义了 Logback 的文件日志输出策略,具体含义如下:


整体作用

配置一个会自动滚动的日志文件输出器,当日志文件达到指定大小或时间条件时,自动创建新文件归档旧日志。


逐行解析

1. <appender> 定义

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  • name="FILE":给这个输出器命名为 FILE(后续可通过该名称引用)
  • class:使用 RollingFileAppender 类,支持日志滚动(自动分割)

2. 日志文件路径

<file>${LOG_FILE}</file>
  • ${LOG_FILE}:使用变量定义的路径(如 ./logs/application.log
  • 作用:当前正在写入的日志文件路径

3. 滚动策略 (RollingPolicy)

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  • 策略类型:基于文件大小 + 时间的滚动策略(最常用)
关键参数
参数 说明
fileNamePattern ${LOG_PATH}/application.%d{yyyy-MM-dd}.%i.log 滚动后的文件名格式:
%d{yyyy-MM-dd}:日期
%i:序号(同一天内按序号递增)
maxFileSize 50MB 单个日志文件最大 50MB
maxHistory 7 保留最近 7 天的日志文件

4. 日志格式 (encoder)

<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
占位符 示例 说明
%d{...} 2023-08-20 14:30:45.123 精确到毫秒的时间戳
[%thread] [main] 当前线程名
%-5level INFO 日志级别(左对齐,5字符宽度)
%logger{36} c.h.service.UserService 日志来源类名(最多36字符)
%msg User login success 实际日志内容
%n - 换行符

实际效果示例

生成的日志文件

./logs/
├── application.log              # 当前正在写入的日志
├── application.2023-08-20.0.log # 滚动后的归档日志(按日期+序号)
└── application.2023-08-19.0.log

单条日志输出示例

2023-08-20 14:30:45.123 [http-nio-8080-exec-1] INFO  c.h.service.UserService - User login success

生产环境 vs 开发环境

  • 生产环境:通常会增加限制(如 maxFileSize=100MB, maxHistory=30
  • 开发环境:保留默认值即可(如你的配置中注释提到的 "生产环境会覆盖这些参数"

常见问题

  1. 为什么需要滚动日志?

    • 避免单个文件过大影响读写性能
    • 便于按时间归档和清理旧日志
  2. %i 什么情况下会递增?
    当同一天内日志文件超过 maxFileSize 时,序号自动+1(如 application.2023-08-20.0.log.1.log

  3. 如何修改日志路径?
    调整 ${LOG_PATH} 变量的值即可(如改为 /var/logs/myapp

posted @ 2025-06-23 23:03  258333  阅读(37)  评论(0)    收藏  举报