RoRでこれが行われるのと同様のスタックトレースを処理するnode.jsパッケージを探しています。
このテキストは、任意のエラーから.stack
プロパティから取得できます。例えば:
try {
throw new Error();
} catch (e) {
console.log(e.stack);
}
または、スタックトレースを取得するためにエラーをnew
だけ上げます
console.log(new Error().stack)
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;
}
次に、スタックトレース付きのウィンストンロガーを取得します。 要点 にもあります。
そのための関数があります:console.trace()
コンソールにログを記録したくない場合は、new Error().stack
を使用してスタックトレース文字列値を取得できます。
チェックアウト callsite 、これはスタックオブジェクトを取得するので、好きなように(そして文字列ではなくオブジェクトとして)使用できます。そのかなり素晴らしい、そして素晴らしくてシンプルです。スタックで遊ぶことの詳細については this をチェックしてください
Node.js用の優れたロガーはすでにいくつかありますが、色付きのシンプルな出力と簡単なスタックトレースを出力するロガーを作成しました。これは、便利だと思うconsole.logをオーバーライドしません。興味があれば、それを見つけることができます ここでは、node-logger 。