cursor-init/docs/winston.md
expressgy 2ee70e5d42 feat: 完成健康检查接口和Swagger文档完善
 健康检查功能:
- 实现完整的健康检查接口(/api/health, /api/health/detailed)
- 支持MySQL和Redis依赖状态检查
- 包含系统信息、性能指标监控
- 修复this上下文问题,确保服务方法正常调用
- 添加全面的健康检查测试用例

📝 Swagger文档优化:
- 创建全局响应Schema定义和错误码说明
- 完善API文档,包含详细的错误码表格
- 添加JWT认证说明和响应格式示例
- 增加全局组件、响应模板和示例
- 创建Swagger文档功能测试

🎯 任务完成:
-  5.0 健康检查接口 - 实现系统和依赖健康状态监控
-  7.0 Swagger文档完善 - 增加全局响应示例和错误码说明

📁 新增文件:
- src/controllers/health.controller.ts - 健康检查控制器
- src/services/health.service.ts - 健康检查服务层
- src/type/health.type.ts - 健康检查类型定义
- src/validators/health.response.ts - 健康检查响应验证
- src/validators/global.response.ts - 全局响应Schema定义
- src/tests/health.test.ts - 健康检查功能测试
- src/tests/redis.test.ts - Redis连接测试
- src/tests/swagger.test.ts - Swagger文档功能测试
2025-06-28 22:09:02 +08:00

2.1 KiB
Raw Blame History

Winston 支持以下 7 个日志等级(按优先级从高到低排序):

📊 Winston 日志级别

级别 优先级 描述 使用场景
error 0 错误 系统错误、异常、崩溃
warn 1 警告 潜在问题、性能警告
info 2 信息 一般信息、重要事件
http 3 HTTP HTTP 请求/响应日志
verbose 4 详细 详细操作信息
debug 5 调试 调试信息、开发阶段
silly 6 最详细 极其详细的调试信息

🎯 级别过滤机制

当你设置日志级别时Winston 会记录该级别及更高优先级的所有日志:

// 如果设置 level: 'warn'
logger.level = 'warn';

logger.error('会被记录'); // ✅ 优先级 0
logger.warn('会被记录'); // ✅ 优先级 1
logger.info('不会被记录'); // ❌ 优先级 2
logger.debug('不会被记录'); // ❌ 优先级 5

💡 在你的日志器中使用

你可以更新日志器类来支持所有级别:

export class Logger {
    static error(message: string): void {
        logger.error(message);
    }

    static warn(message: string): void {
        logger.warn(message);
    }

    static info(message: string): void {
        logger.info(message);
    }

    static http(message: string): void {
        logger.http(message);
    }

    static verbose(message: string): void {
        logger.verbose(message);
    }

    static debug(message: string): void {
        logger.debug(message);
    }

    static silly(message: string): void {
        logger.silly(message);
    }
}

🔧 常用配置

// 生产环境:只记录重要信息
level: 'warn'; // 记录 error, warn

// 开发环境:记录详细信息
level: 'debug'; // 记录 error, warn, info, http, verbose, debug

// 调试模式:记录所有信息
level: 'silly'; // 记录所有级别

这样你就可以根据不同环境灵活控制日志的详细程度了!