寻找一个处理堆栈跟踪的node.js包,类似于在RoR中完成此操作的方式:
答案 0 :(得分:32)
您可以从任何错误中获取.stack
属性的此文本。例如:
try {
throw new Error();
} catch (e) {
console.log(e.stack);
}
或仅new
出现错误以获取堆栈跟踪
console.log(new Error().stack)
答案 1 :(得分:7)
有一个功能:console.trace()
如果您不想登录到控制台,可以使用new Error().stack
获取堆栈跟踪字符串值
答案 2 :(得分:7)
如果您使用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;
}
然后你会得到带有堆栈跟踪的winston记录器。也在a gist。
答案 3 :(得分:0)
查看callsite,这会抓取堆栈对象,以便您可以以任何方式使用它(以及作为对象,而不是字符串)。它非常棒,漂亮而简单。查看this了解有关使用堆栈的更多信息
Node.js已经有一些优秀的记录器了,但是我构建了一个记录器,它输出一个彩色的,简单的输出和简短的堆栈跟踪。它不会覆盖console.log,我发现它很方便。如果您有兴趣,可以找到它here, node-logger。