2019-09-14Node日志感受
why
日志是用来记录程序运行重要的工具
- 记录请求日志,关键节点打上日志,可以追踪问题(生产)
- 方便调试,定位故障
- 监控应用的运行状态
what(egg.js为例)
日志分为:
- appLogger应用日志,也是我们自定义的日志
- coreLogger核心框架,插件日志
- errorLogger
- agentLogger用于监控agent日志
日志级别:
- ctx.logger.debug()
- ctx.logger.info()
- ctx.logger.warn()
- ctx.logger.error()
- 以appLogger为例,一共4*4种
日志编码:
- 默认utf-8
feature
目前日志都支持切割,每天一个文件,以.log.2019-09-14为尾缀(小时切割和文件大小切割实用性不高),编写日志的时候我们也需要注意如下几点:
在关键请求关键位置打好日志
打印日志注明这是哪个文件哪个方法处理的日志
logger.debug(`>>>> Entering yourMethod(month = ${month}, count= ${count}"); //通过日志 >>>> 和 <<<< 将给出函数输入和退出的信息
日志不能太多,一个是查问题日志太多,第二个是对硬盘写入日志也有一定性能影响(egg是写入内存,每秒保存一次硬盘)
合理使用try-catch来进行日志输出
日志写法一定要避免简洁,不要日志再抛错(正常打印参数,打印处理结果)
日志不能具备除了日志以外的功能
正确把握日志级别,info记录信息(最主要的),debug显示调试信息,warn显示警告,error保存数据库请求类型的报错
尽量使用ctx.logger而并非console.log,后者将会把所有日志打印在stdout中,无法关闭或打开调试信息,并且不区分级别