# Logger 日志系统模块

Logger 是应用的核心日志管理模块，提供统一的日志记录服务、高性能日志输出、敏感信息过滤和智能日志管理功能，支持多种环境配置和请求链路追踪。

## 日志记录接口

### debug()
记录调试信息，主要用于开发环境的问题排查。

### info()
记录重要业务操作和系统状态变更，用于业务监控和审计。

### warn()
记录需要关注但不影响正常业务流程的警告信息。

### error()
记录影响业务功能正常使用的错误信息，包含详细的错误上下文和堆栈信息。

### fatal()
记录可能导致系统不可用的严重错误，需要立即处理。

### trace()
记录极细粒度的执行追踪信息，用于深度调试和性能分析。

## 上下文绑定接口

### bindRequest()
创建绑定了特定请求上下文的日志记录器，自动携带请求相关信息。

## 日志管理接口

### cleanupOldLogs()
定期清理过期日志文件，每天凌晨2点自动执行。

### getLogStatistics()
获取日志统计信息，包括文件数量、大小等信息。

### getRuntimeLogTail()
获取运行日志尾部内容，用于后台查看最新日志。

## 使用的项目内部依赖

### PinoLogger (来自 nestjs-pino)
高性能日志库，提供结构化日志输出和多种传输方式。

### ConfigService (来自 @nestjs/config)
环境配置服务，用于读取日志相关的环境变量配置。

### ScheduleModule (来自 @nestjs/schedule)
定时任务模块，用于执行日志清理和健康监控任务。

### LogLevel (本模块)
日志级别类型定义，包含debug、info、warn、error、fatal、trace。

### LogContext (本模块)
日志上下文接口，用于补充日志的上下文信息。

### LogOptions (本模块)
日志选项接口，定义日志记录时的参数结构。

### LoggerConfigFactory (本模块)
日志配置工厂类，根据环境变量生成Pino日志配置。

## 核心特性

### 高性能日志系统
- 集成Pino高性能日志库，支持降级到NestJS内置Logger
- 支持多种传输方式：控制台美化输出、文件输出、多目标输出
- 根据环境自动调整日志级别和输出策略

### 安全与隐私保护
- 自动过滤敏感信息，防止密码、token等敏感数据泄露
- 递归扫描日志数据中的敏感字段，将其替换为占位符
- 支持自定义敏感字段关键词列表

### 请求链路追踪
- 支持请求上下文绑定，便于链路追踪和问题定位
- 自动生成请求ID，关联用户行为和操作记录
- 提供完整的请求响应日志序列化

### 智能日志管理
- 定期清理过期日志文件，防止磁盘空间耗尽
- 监控日志系统健康状态，及时发现异常情况
- 提供日志统计和分析功能，支持运维监控

## 潜在风险

### 性能风险
- 高频日志输出可能影响应用性能，特别是trace级别日志
- 建议生产环境禁用debug和trace级别，仅在开发环境使用
- 大量日志文件可能占用过多磁盘空间，需要定期清理

### 配置风险
- 日志级别配置错误可能导致重要信息丢失或性能问题
- 日志目录权限不足可能导致日志写入失败
- 建议定期检查日志配置和目录权限

### 敏感信息泄露风险
- 虽然有敏感信息过滤机制，但可能存在遗漏的敏感字段
- 建议定期审查敏感字段关键词列表，确保覆盖所有敏感信息
- 避免在日志中记录完整的用户输入数据