日志
说明
本项目使用 winston 与 nest-winston 集成,提供了完整的日志记录解决方案。
日志模块功能
- 多级别日志(http、info、error)
- 日志文件按日期自动轮转
- 异常捕获与记录
- 控制台输出与文件存储
配置日志输入目录
在项目根目录的 .env
文件中,添加以下配置:
bash
# 日志存储路径配置
NEST_LOG_DIR=log
不同环境可以设置不同的路径:
bash
# 开发环境 (.env.development)
LOG_DIR=log
# 测试环境 (.env.test)
LOG_DIR=test_logs
# 生产环境 (.env.production)
LOG_DIR=/var/log/your-app
日志级别说明
本项目配置了以下几种日志级别:
http
: 记录HTTP请求相关信息info
: 记录普通信息性日志error
: 记录错误信息exception
: 记录未捕获异常
Winston
中日志级别优先级为:error > warn > info > http > verbose > debug > silly
日志文件组织结构
日志文件会按照不同级别和日期自动分类,格式如下:
text
${LOG_DIR}/
├── http/
│ └── http-YYYY-MM-DD.log
├── info/
│ └── info-YYYY-MM-DD.log
├── error/
│ └── error-YYYY-MM-DD.log
└── exception/
└── exception-YYYY-MM-DD.log
在项目中使用日志
ts
import { WINSTON_MODULE_PROVIDER } from 'nest-winston'
import { Logger } from 'winston'
@Injectable()
export class UserService {
constructor(
@Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger,
) {}
getHello(): string {
this.winston.info('Hello service called', {
context: 'UserService',
user: 'user1',
})
}
}
最佳实践
使用合适的日志级别:
error
: 记录影响功能或业务的错误warn
: 记录潜在问题或需要关注但不影响主要功能的事件info
: 记录重要业务流程或状态变更http
: 记录API请求/响应debug
: 记录调试信息(仅开发环境)verbose
: 详细的流程追踪(仅开发环境)