Debugging 如何记录和跟踪NodeJS事件和事件处理程序调用?
在注册事件处理程序时,是否有任何方法记录所有其他已注册的事件处理程序 还有什么方法可以记录所有发出的事件,以及在运行时发出事件时触发的处理程序函数的名称 如果nodejs应用程序触发链式事件(一个事件触发另一个事件),并且每个事件都有多个处理程序,那么当事件处理程序链的叶发生异常时,stacktrace不会显示上下文的完整信息 在这种情况下,事件日志和处理程序信息将非常有用 一个黑客解决方案是将(有条件的)日志记录添加到,但我相信一定有更好的方法。 它发出一个带有名称和函数的Debugging 如何记录和跟踪NodeJS事件和事件处理程序调用?,debugging,node.js,logging,event-handling,trace,Debugging,Node.js,Logging,Event Handling,Trace,在注册事件处理程序时,是否有任何方法记录所有其他已注册的事件处理程序 还有什么方法可以记录所有发出的事件,以及在运行时发出事件时触发的处理程序函数的名称 如果nodejs应用程序触发链式事件(一个事件触发另一个事件),并且每个事件都有多个处理程序,那么当事件处理程序链的叶发生异常时,stacktrace不会显示上下文的完整信息 在这种情况下,事件日志和处理程序信息将非常有用 一个黑客解决方案是将(有条件的)日志记录添加到,但我相信一定有更好的方法。 它发出一个带有名称和函数的newListene
newListener
事件
接下来,不要更改events.js,而是冲压原型。一旦您需要EventEmitter,就可以在运行时对其进行monkeypatch。这通常是一种不好的做法,特别是对于像EventEmitter这样重要的东西,但对于调试您自己的程序来说是很好的
(function(){
var old = EventEmitter.prototype.emit;
EventEmitter.prototype.emit = ...
)();
接下来,记录其他处理程序:
console.log(emitter.listeners('eventName'));