Skip to content

日志规范

日志级别

级别定义

级别用途使用场景
DEBUG调试信息详细的调试日志,开发阶段使用
INFO一般信息重要的业务流程记录
WARN警告信息潜在问题,但不影响正常运行
ERROR错误信息发生错误,但系统仍可运行
FATAL致命错误严重错误,系统可能崩溃

使用原则

  • 生产环境关闭 DEBUG 级别
  • 避免过多的日志输出
  • 根据环境调整日志级别

日志格式

统一格式

[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%level] [%logger{36}] - %msg%n

结构化日志

json
{
  "timestamp": "2024-01-01T12:00:00.000Z",
  "level": "INFO",
  "thread": "main",
  "logger": "com.example.service.UserService",
  "message": "User login successful",
  "traceId": "abc123",
  "spanId": "def456",
  "details": {
    "userId": 123,
    "ip": "192.168.1.1"
  }
}

日志内容规范

内容要求

  • 日志内容清晰明了
  • 包含必要的上下文信息
  • 使用结构化的数据

避免内容

  • 不要记录敏感信息(密码、Token 等)
  • 避免无意义的日志
  • 不要记录过大的对象

日志分类

业务日志

  • 用户操作日志
  • 业务流程日志
  • 交易记录日志

系统日志

  • 启动日志
  • 配置日志
  • 异常日志

日志收集与存储

收集方式

  • 使用 ELK 栈进行日志收集
  • 使用 Filebeat 或 Fluentd 采集日志
  • 支持日志实时搜索

存储策略

  • 日志按日期分片存储
  • 设置合理的日志保留时间
  • 定期清理过期日志

最佳实践

  • 使用 SLF4J + Logback 作为日志框架
  • 使用 MDC 存储请求上下文
  • 避免在循环中记录日志
  • 定期审查日志配置

Released under the MIT License.