node日志处理实践

日志用来记录用户操作、系统运行状态等,是一个系统重要的组成部分。系统出现问题时,日志的好坏关系到问题定位的速度,同时可以通过对日志的观察和分析,提前发现系统可能存在的问题,避免线上事故的发生。

node日志跟后端日志没有区别,所以在日志实践过程中,一直在学习后端在日志管理上的经验,尽量跟后端日志规范、风格保持一致,便于公司运维维护管理。

1. 日志场景

1.1 模块中的日志处理

node模块中不建议打印日志,如果需要在某些场景下打印日志,可以使用debug模块。

const debug = require('debug')('my-module');
debug('the param is: %s', param);

正常情况执行 node file.js,是不会打印上述日志的,只有添加环境变量DEBUG=my-module node file.js后才会打印上述日志。

1.2 应用中的日志处理

node-bunyan模块的基础上,进行了封装,满足业务的需要。

2. 日志处理

收集到的日志会进行两种处理:

2.1 开发环境

实时日志打印到终端,开发时,可以试试查看。

2.2 生产环境

3. 日志格式

日志分为三部分: prefix、tags、mesage。

3.1 prefix

日志的基本信息,所有日志均存在的内容:

3.2 tags

在日志上报到数据中心时,可以创建K-V自定义字段,sql查询时可以建立索引,目前使用的tags如下:

3.3 message

日志信息部分,在打印日志时,每条日志包含供问题排查的关键信息。日志接入统一日志中心,该字段会做数据远程上报,不会做索引处理。

4. 日志注意事项

参考