如何在node.js中logging堆栈跟踪

寻找一个处理堆栈跟踪的node.js包,类似于RoR中的这种做法:

Rails:loggingexception的整个堆栈跟踪

您可以从任何错误中获取.stack属性的文本。 例如:

 try { throw new Error(); } catch (e) { console.log(e.stack); } 

或者只是为了获得堆栈跟踪而new一个错误

 console.log(new Error().stack) 

有一个函数: console.trace()

如果您不想login到控制台,则可以使用new Error().stack获取堆栈跟踪string值

如果你使用winston ,你可以添加这个:

 winston = require('winston'); logger = expandErrors(new winston.Logger()); logger.info(new Error("my error")); // Extend a winston by making it expand errors when passed in as the // second argument (the first argument is the log level). function expandErrors(logger) { var oldLogFunc = logger.log; logger.log = function() { var args = Array.prototype.slice.call(arguments, 0); if (args.length >= 2 && args[1] instanceof Error) { args[1] = args[1].stack; } return oldLogFunc.apply(this, args); }; return logger; } 

然后你会得到带有堆栈跟踪的winstonlogging器。 也是一个主意 。

检查callsite ,抓取堆栈对象,以便您可以以任何方式使用它(以及作为对象而不是string)。 它非常棒,而且很好,很简单。 看看这个更多关于玩堆栈的信息

已经有一些优秀的logging器用于Node.js,但是我构build了一个logging器,输出彩色的简单输出和简单的堆栈跟踪。 它不会覆盖console.log,我发现它很方便。 如果你有兴趣,你可以在这里findnode-logger 。