起源是在测试时候没有报错,系统功能不正常,和测试查找错误很麻烦
埋点就是在某个功能函数里上报一些信息,比较类试express的中间件机制,但是没有操作的权限
自定义express的打印日志中间件
app.get("/", (req, res) => {
// console.log(`${req.method} ${req.url} ${Date.now()}`)
logger(req);
res.send("index");
});
app.get("/about", (req, res) => {
// console.log(`${req.method} ${req.url} ${Date.now()}`)
logger(req);
res.send("about");
});
app.get("/login", (req, res) => {
// console.log(`${req.method} ${req.url} ${Date.now()}`)
logger(req);
res.send("login");
});
function logger(req) {
console.log(`${req.method} ${req.url} ${Date.now()}`);
}
中间件实现需求
app.use((req, res, next) => {
console.log(`${req.method} ${req.url} ${Date.now()}`);
next();
});
app.get("/", (req, res) => {
res.send("index");
});
app.get("/about", (req, res) => {
res.send("about");
});
app.get("/login", (req, res) => {
res.send("login");
});
function logger(req) {
console.log(`${req.method} ${req.url} ${Date.now()}`);
}
代码执行之后我们发现任何请求进来都会先在服务端打印请求日志,然后才会执行具体的业务处理函数
这是node服务端时候,前端本地实现封装函数,在再调用时候引用太麻烦了
可以增加自动埋点方式
可以基于 babel 来实现自动的函数插桩,在这就是自动埋点
import aa from 'aa';
import * as bb from 'bb';
import {cc} from 'cc';
import 'dd';
function a () {
console.log('aaa');
}
class B {
bb() {
return 'bbb';
}
}
const c = () => 'ccc';
const d = function () {
console.log('ddd');
}
转换成
import _tracker2 from "tracker";
import aa from 'aa';
import * as bb from 'bb';
import {
cc } from<