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
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 贯穿整个请求链路,便于分布式场景下的问题定位