You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2.5 KiB

kind name category scope source_files
logging_system 基于 SLF4J + Logback 的注解式日志系统 logging_system [**] [crm-app/src/main/resources/application.yml crm-auth/src/main/resources/application.yml crm-base/src/main/java/com/crm/base/filter/TraceIdFilter.java crm-base/src/main/java/com/crm/base/advice/GlobalExceptionHandlerAdvice.java]

本仓库采用 Spring Boot 内置的 SLF4J + Logback 作为统一日志框架,通过 Lombok 的 @Slf4j 注解在各模块中注入 logger 实例,所有业务类(auth、base、file)均遵循同一模式,无需手动声明 Logger 字段。

日志框架与依赖

  • 日志门面:SLF4J(通过 Lombok 的 lombok.extern.slf4j.Slf4j 暴露 log 字段)
  • 日志实现:Logback(Spring Boot 默认集成,由 application.yml 中的 logging.pattern.console 驱动)
  • 无显式 logback.xml 配置,全部通过 application.yml 的 logging.pattern.console 控制输出格式

日志级别使用约定

  • info:用于业务流程关键节点(如权限初始化、用户注册、孤儿身份重定向等)
  • warn:用于可恢复异常或边界情况(如 SQL 解析失败、token 解析失败累计计数)
  • error:用于外部调用失败、全局异常捕获等严重错误(如钉钉接口异常、全局异常处理器)
  • debug:用于调试信息(如数据权限 SQL 注入完成、token 校验未通过路径)

结构化字段与 TraceId 追踪

  • 控制台日志格式:%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] %-5level %logger{36} - %msg%n
  • 通过 %X{traceId} 支持链路追踪,traceId 由 crm-base 模块的 TraceIdFilter 过滤器注入到 MDC 中
  • 日志包含线程名、级别、logger 名称(限制 36 字符)、消息体,便于日志聚合与分析

配置位置

  • crm-app/src/main/resources/application.yml:生产环境应用入口,定义统一的 console 日志格式
  • crm-auth/src/main/resources/application.yml:认证服务独立运行时的日志格式配置
  • 其他模块(crm-base、crm-file)未单独配置 logging,继承父 POM 或运行时应用的配置

约束与规范

  • 所有需要日志的类统一使用 @Slf4j 注解,禁止直接 new Logger
  • 日志消息中使用占位符 {} 而非字符串拼接,避免性能损耗
  • 敏感信息(如密码、密钥)不直接打印到日志,钉钉接口异常时仅记录状态码和响应体摘要
  • traceId 贯穿整个请求链路,便于分布式场景下的问题定位