1. 时间戳(Timestamp)
记录日志事件发生的具体时间(如ISO 8601格式),是追踪问题发生时间线、关联多源日志的核心依据,帮助开发者快速定位故障发生的时段。
2. 日志级别(Log Levels)
通过标准化级别划分日志严重程度,常见级别包括:fatal(系统崩溃,无法继续运行)、error(操作失败但系统仍在运行)、warn(潜在问题需关注)、info(一般性信息,如服务启停)、debug(调试细节,开发阶段使用)、trace(极致细节,用于深度追踪)。不同级别便于过滤无关信息,聚焦关键问题。
3. 进程ID(PID)
标识生成日志的Node.js进程,在多进程/集群环境中(如使用PM2),PID能唯一定位具体进程,帮助区分不同实例的问题(如某个进程内存泄漏)。
4. 请求相关指标
5. 性能指标
(总时间-空闲时间)/总时间×100%),高CPU使用率可能由CPU密集型任务(如复杂计算、同步操作)或内存泄漏导致。需通过os.cpus()获取核心级数据,或使用perf_hooks模块监控事件循环耗时。RSS(驻留集大小,进程占用的物理内存)、heapTotal/heapUsed(V8堆内存总量/已用量)、external(V8管理的C++对象内存,如Buffer)。持续增长的内存使用可能提示内存泄漏(如全局变量引用、未销毁的事件监听),需通过process.memoryUsage()监控或堆快照(Heap Dump)分析。fs.promises)或升级存储设备(如SSD)。6. 错误与异常信息
记录应用运行中的错误详情(如错误类型、堆栈轨迹、错误消息),是排查问题的核心线索。需捕获同步错误(如try-catch)、异步错误(如Promise.catch、process.on('uncaughtException')),并记录上下文信息(如请求ID、用户ID、操作步骤),便于快速定位错误根源。
7. 第三方组件指标
记录第三方库或服务的性能和稳定性信息(如数据库查询时间、外部API响应时间、第三方SDK错误)。例如,数据库查询慢可能提示索引缺失,外部API超时可能提示网络问题,帮助评估第三方组件的影响,及时优化或替换。
8. 上下文数据
为日志添加业务或环境上下文(如用户ID、操作类型、事务ID、设备信息、地理位置),丰富日志细节。例如,结合用户ID可分析特定用户的操作路径,结合事务ID可追踪业务操作的完整流程,便于业务问题排查(如订单支付失败)。