Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 如何记录和跟踪NodeJS事件和事件处理程序调用?_Debugging_Node.js_Logging_Event Handling_Trace - Fatal编程技术网

Debugging 如何记录和跟踪NodeJS事件和事件处理程序调用?

Debugging 如何记录和跟踪NodeJS事件和事件处理程序调用?,debugging,node.js,logging,event-handling,trace,Debugging,Node.js,Logging,Event Handling,Trace,在注册事件处理程序时,是否有任何方法记录所有其他已注册的事件处理程序 还有什么方法可以记录所有发出的事件,以及在运行时发出事件时触发的处理程序函数的名称 如果nodejs应用程序触发链式事件(一个事件触发另一个事件),并且每个事件都有多个处理程序,那么当事件处理程序链的叶发生异常时,stacktrace不会显示上下文的完整信息 在这种情况下,事件日志和处理程序信息将非常有用 一个黑客解决方案是将(有条件的)日志记录添加到,但我相信一定有更好的方法。 它发出一个带有名称和函数的newListene

在注册事件处理程序时,是否有任何方法记录所有其他已注册的事件处理程序

还有什么方法可以记录所有发出的事件,以及在运行时发出事件时触发的处理程序函数的名称

如果nodejs应用程序触发链式事件(一个事件触发另一个事件),并且每个事件都有多个处理程序,那么当事件处理程序链的叶发生异常时,stacktrace不会显示上下文的完整信息

在这种情况下,事件日志和处理程序信息将非常有用

一个黑客解决方案是将(有条件的)日志记录添加到,但我相信一定有更好的方法。

它发出一个带有名称和函数的
newListener
事件

接下来,不要更改events.js,而是冲压原型。一旦您需要EventEmitter,就可以在运行时对其进行monkeypatch。这通常是一种不好的做法,特别是对于像EventEmitter这样重要的东西,但对于调试您自己的程序来说是很好的

(function(){
  var old = EventEmitter.prototype.emit;
  EventEmitter.prototype.emit = ...
)();
接下来,记录其他处理程序:

console.log(emitter.listeners('eventName'));