前端打日志思考
简述
打log是大多数研发 调试问题的重要手段
虽然我们推崇尽可能少的调试代码
但毕竟大多数人 都没达到 一口气撸完代码就能完美跑起来的程度
也很难保证线上不出任何问题 例如测速产品 蹭蹭蹭的跑过来 说xxx不行了
作为前端er 一般我们只能喊她抓包
的确前端代码上线后 其实都是能跑起来的, 大多数是因为接口出现了问题 或者前端没对异常数据做好处理
但也有一些时候 我们也会一头雾水, 然后说一句怎么可能
然后就页面连内网 log 打起来调试
其实这样还是不够快速的定位问题
那么本文就探讨下 如何通过日志来提高我们排查问题的效率
总结起来: 打日志是简单的活, 也是非常讲究的活
场景
- 开发过程中, 出现问题时, 需要有log支撑跑到哪一步, 数据的流动是如何的
- 线上出现报错时, 需要把log数据上传到Sentry 以便排查问题
- 线上出现异常时, 没发生报错 需要通过机关把日志上传到Sentry, 以便排查问题
日志库
我们需要一个日志库来满足我们的日常开发需求
- 分类打日志
- 支持浏览器和node
- 在终端里支持不同颜色来显示不同的log类型, 非终端输出能输出正常的log文本
- 支持切换类型, 例如在终端里就文本形式输出, 当上传到日志服务器时, 需要支持json结构
- 支持logs的间隔输出时间
- 友好的日志输出格式
比较通用的数据格式
{
category: 'auth', //主要用来区分 日志是哪个文件输出的
message: 'Authenticated user ' + user.email, //主要信息
level: 'info' // 级别定义
}
打log的要诀
盲目的为问题打log 会导致log过多 而导致很难找到有价值的信息
log分类
前端最常见的就是疯狂console.log
这种产生的log
很容易为了debug问题的时候打的log, 解决完 没删除 之后看到这个log根本不知道是哪里输出的 或者作用是什么
所以我们需要为log分好类