NestJS 正确处理日志
前言
程序运行时,你怎么知道它是否正常?出问题了,你怎么知道哪一步出了错?
这些问题的答案就是 日志。日志是程序运行时留下的"行动记录",是排查问题最重要的工具。
我们该如何在 NestJS 中正确地处理日志呢?本文将从日志等级、日志存储位置、NestJS 内置 Logger、第三方日志库(Winston、Pino)、全局异常过滤器、请求日志中间件等方面进行详细讲解。
二、日志等级
日志按照严重程度分为以下等级(从低到高):
| 等级 | 说明 |
|---|---|
| Verbose | 最详细的信息,例如接口耗时,非必要不使用 |
| Debug | 调试信息,例如接口入参、返回值,仅开发阶段使用 |
| Log | 通用日志,记录普通运行信息 |
| Warning | 警告,例如即将废弃的接口 |
| Error | 错误,例如接口异常、数据库报错 |
三、日志写到哪里?
不同场景下,日志的存储位置不一样:
| 日志类型 | 推荐位置 |
|---|---|
| 普通日志 | 控制台 + 文件 |
| 错误日志 | 文件 + 数据库 |
| 警告日志 | 控制台 + 文件 |
| 调试日志 | 控制台(仅开发阶段) |
| API 日志 | 控制台 + 数据库(生产) |
不同阶段的建议:
| Log | Error | Warning | Debug | Verbose | API 日志 | |
|---|---|---|---|---|---|---|
| 开发阶段 | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| 预发布阶段 | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ |
| 生产环境 | ✓ | ✓ | ✗ | ✗ | ✗ | ✓ |
此处内容已隐藏回复后方可阅读。
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据