“ 在很早的一篇文章中我提到过我们公司使用node作为中间件,其中node作为中间件很重要的一点就是作为日志使用,日志的打印是需要经过node,也就意味着请求或者响应时都需要经过node。有趣的一点是在一次做项目时看到前端请求node之后不经后端直接打印日志,这种情况也是很常见的一种,可以理解为此时node在做为后端,日志的作用在于方便线上出问题好排查以及定位点。”
温馨提示:看这篇文章是默认你会node的哟。
window.navigator.sendBeacon和log4js在这里我就不介绍它们的作用了,如果还不是太了解的同学可以先去看看它们的介绍然后再来看这篇文章。在这里我使用的是expess框架,在学习之前我们先安装好express和log4js,执行代码npm install express log4js –save-dev。
1 | import React from 'react'; |
body-parser
来解析body,执行下载指令:npm install body-parser。还需要注意的一个坑是:上面我们提到React前端代码中通过sendBeacon传递的ajaxData是form-data表单类型的,而body-parser是处理不了这一类型的,因此req.body无法接收到数据,因此在这里我使用了一个multer中间件,它只会解析form设置为enctype=”multipart/form-data”表单,执行下载指令:npm install multer。node后端代码如下所示,1 | const express = require('express'); |
当我们去点击button按钮时会在终端打印出如下图所示内容,会发现事件点以及相关的重要提示都在日志中打印出来了。
点击button打印的日志内容
1 | // 添加日志管理(配置) |
到这里就教会大家如何利用sendBeacon和log4js结合来打印存储日志,日志的使用是十分重要的,方便后续在线上排查bug等功能。如果你觉得这篇文章对你有帮助记得连三哟,谢谢大家。