如何记录节点应用程序的操作顺序?

时间:2019-04-24 09:31:16

标签: node.js

我正在寻找一种记录节点应用程序操作顺序的方法。与堆栈跟踪类似,但专门用于调试方法链与错误。这样做的目的是避免向每个函数添加代码或显式地监听每个函数。有一种方法可以在ruby中做到这一点,但是在node上看不到任何解决方法。

我一直在寻找一种方法,可以在每次调用函数时利用低级节点事件(或添加侦听器),并记录传递给函数的函数名和参数。节点中是否存在类似的内容?还是现有的工具可能会做类似的事情?

例如,无需在每个函数中添加代码,

var bar, baz, foo;

baz = function(b) {
  return b * 2;
};

bar = function(a, b, c) {
  return baz(a, b, c);
};

foo = function() {
  return bar(1, 2, 3);
};

foo();

// calling foo() would log...
// foo called, returns from bar
// bar called with 1, 2, 3, returns from baz
// baz called with 2, returns 4

1 个答案:

答案 0 :(得分:1)

使用javascript无法做到这一点,但是代码可以为您提供帮助。在javascript中,您可以将函数包装在另一个函数周围,这样可以帮助您进行调试,而不必在每个函数中复制代码。

const logFunction = function(f) {
    return function() {
        console.log('Calling Function');
        const x = f.apply(null, arguments);
        console.log('Function Returns', x);
        return x;
    }    
}

const x  = logFunction(function (name) {
    console.log('Hello', name);
    return name;
});

const sum  = logFunction(function (a, b) {
    return a + b;
});

x('World');
sum(2, 3);

结果:

Calling Function
Hello World
Function Returns World
Calling Function
Function Returns 5