Подтвердить что ты не робот

Как регистрировать трассировки стека в node.js

Ищете пакет node.js, который обрабатывает трассировку стека, аналогичную тому, как это делается в RoR:

Rails: протоколирование всей трассировки стека исключения

4b9b3361

Ответ 1

Вы можете удалить этот текст из свойства .stack из любой ошибки. Например:

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

или просто new с ошибкой для получения трассировки стека

console.log(new Error().stack)

Ответ 2

существует функция для этого: console.trace()

Если вы не хотите регистрироваться на консоли, вы можете получить строковое значение трассировки стека с помощью new Error().stack

Ответ 3

Если вы используете 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 loggers со стеком. Также находится в gist.

Ответ 4

Отъезд callsite, это захватывает объект стека, поэтому вы можете использовать его любым способом (и как объект, а не строка). Это довольно удивительно, и приятно и просто. this для получения дополнительной информации о игре со стеком

Есть несколько отличных журналов для Node.js, но я создал регистратор, который выводит раскрашенную, простую и краткую трассировку стека. Он не переопределяет console.log, который я считаю удобным. Если вам интересно, вы можете найти здесь node -logger.