Files
MTKJPAY/mt-pay/LOGGING_GUIDE.md
qiube c338571dc1 feat(product): 新增商品及SKU实体和相关配置
- 添加商品实体类MtProduct及其Mapper接口
- 添加商品SKU实体类MtProductSku及其Mapper接口
- 配置MyBatis-Plus分页插件和自动填充处理器
- 完善实体字段注释和数据类型定义
- 集成SLF4J日志功能并添加详细使用指南文档
2025-12-19 17:52:06 +08:00

5.7 KiB
Raw Blame History

日志使用指南

概述

项目已全面集成SLF4J日志功能使用Logback作为日志实现框架。所有关键类都已添加日志记录便于问题排查和系统监控。

日志配置

日志配置文件

  • 位置: src/main/resources/logback-spring.xml
  • 功能: 配置日志输出格式、文件路径、日志级别等

日志级别

  • DEBUG: 详细的调试信息,通常只在开发环境使用
  • INFO: 一般信息,记录系统运行状态和关键操作
  • WARN: 警告信息,表示潜在问题但不影响系统运行
  • ERROR: 错误信息,表示系统错误需要关注

日志输出

  1. 控制台输出: 开发环境默认输出到控制台
  2. 文件输出:
    • 所有日志: logs/mt-pay.{日期}.log
    • 错误日志: logs/mt-pay-error.{日期}.log
  3. 日志轮转: 按天轮转保留30天单文件最大10MB

已添加日志的类

1. 配置类

  • MyBatisPlusConfig - MyBatis-Plus配置日志
  • RestClientConfig - RestClient配置日志
  • WebConfig - Web配置跨域日志
  • DruidDataSourceConfig - 数据源配置日志(已有)
  • MyMetaObjectHandler - 自动填充日志(已有)

2. 控制器类

  • ProductController - 商品管理接口日志(已有)
  • PaymentController - 支付接口日志(已有)
  • CallbackController - 回调接口日志(已有)

3. 服务实现类

  • ProductServiceImpl - 商品服务日志(已增强)
  • PaymentOrderServiceImpl - 支付订单服务日志(已增强)
  • PingPongPayServiceImpl - PingPong支付服务日志已有
  • SignatureServiceImpl - 签名服务日志(已有)
  • CallbackServiceImpl - 回调服务日志(已有)
  • OssServiceImpl - OSS服务日志已有

4. 工具类

  • OrderIdGenerator - 订单号生成器日志(已添加)

5. 异常处理

  • GlobalExceptionHandler - 全局异常处理日志(已有)

6. 主应用类

  • MtPayApplication - 应用启动日志(已增强)

日志使用示例

在类中使用日志

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class YourService {
    
    public void doSomething() {
        // 记录信息日志
        log.info("开始执行操作,参数: {}", param);
        
        try {
            // 业务逻辑
            log.debug("调试信息: {}", debugInfo);
            
        } catch (Exception e) {
            // 记录错误日志
            log.error("操作失败,参数: {}", param, e);
            throw e;
        }
        
        log.info("操作完成,结果: {}", result);
    }
}

日志级别使用建议

  1. DEBUG:

    • 详细的执行流程
    • 中间变量值
    • SQL参数值MyBatis
  2. INFO:

    • 关键业务操作开始/结束
    • 重要状态变更
    • 外部接口调用
  3. WARN:

    • 业务异常(如订单不存在但继续处理)
    • 配置问题
    • 性能警告
  4. ERROR:

    • 系统异常
    • 数据库操作失败
    • 外部接口调用失败

日志格式

控制台格式

2025-12-19 16:37:50.530 [restartedMain] INFO  com.mtkj.mtpay.MtPayApplication - 应用启动成功!

文件格式

2025-12-19 16:37:50.530 [http-nio-8080-exec-1] INFO  com.mtkj.mtpay.controller.ProductController - 创建商品请求ProductRequestDTO(...)

环境配置

开发环境 (dev)

  • 控制台输出:
  • 文件输出:
  • 日志级别: DEBUG
  • MyBatis SQL日志:

测试环境 (test)

  • 控制台输出:
  • 文件输出:
  • 日志级别: INFO
  • MyBatis SQL日志:

生产环境 (prod)

  • 控制台输出:
  • 文件输出:
  • 日志级别: INFO
  • MyBatis SQL日志:

日志文件位置

  • 日志目录: ./logs/(项目根目录)
  • 所有日志: logs/mt-pay.{日期}.log
  • 错误日志: logs/mt-pay-error.{日期}.log

日志查看

开发环境

  • 直接在IDE控制台查看
  • 或查看 logs/ 目录下的日志文件

生产环境

  • 使用 tail -f logs/mt-pay-*.log 实时查看
  • 使用 grep ERROR logs/mt-pay-*.log 查找错误
  • 使用日志分析工具如ELK、Graylog等

最佳实践

  1. 使用占位符: 使用 {} 占位符而不是字符串拼接

    // ✅ 推荐
    log.info("用户ID: {}, 操作: {}", userId, action);
    
    // ❌ 不推荐
    log.info("用户ID: " + userId + ", 操作: " + action);
    
  2. 异常日志: 记录异常时包含堆栈信息

    // ✅ 推荐
    log.error("操作失败", e);
    
    // ❌ 不推荐
    log.error("操作失败: " + e.getMessage());
    
  3. 敏感信息: 不要记录密码、密钥等敏感信息

    // ❌ 不要这样做
    log.info("用户密码: {}", password);
    
  4. 日志级别: 根据重要性选择合适的日志级别

    • 关键业务操作: INFO
    • 调试信息: DEBUG
    • 警告: WARN
    • 错误: ERROR

常见问题

Q: 如何修改日志级别?

A: 修改 logback-spring.xml 中对应环境的日志级别配置。

Q: 如何查看SQL日志

A: 开发环境默认开启,生产环境已关闭。可在 logback-spring.xml 中修改 com.mtkj.mtpay.mapper 的日志级别。

Q: 日志文件太大怎么办?

A: 已配置日志轮转按天轮转单文件最大10MB保留30天。

Q: 如何禁用某个类的日志?

A: 在 logback-spring.xml 中添加:

<logger name="com.mtkj.mtpay.YourClass" level="OFF"/>

总结

项目已全面集成SLF4J日志功能所有关键操作都有日志记录。通过合理的日志级别和格式可以快速定位问题、监控系统运行状态。