Buscando un paquete Node.js que maneja el seguimiento de pila similar a cómo se hace esto en RoR:Cómo iniciar sesión seguimientos de pila en Node.js
Rails: Logging the entire stack trace of an exception
Buscando un paquete Node.js que maneja el seguimiento de pila similar a cómo se hace esto en RoR:Cómo iniciar sesión seguimientos de pila en Node.js
Rails: Logging the entire stack trace of an exception
Usted puede obtener este texto fuera de la .stack
propiedad de cualquier Error. Por ejemplo:
try {
throw new Error();
} catch (e) {
console.log(e.stack);
}
o simplemente new
hasta un error con el fin de conseguir el seguimiento de la pila
console.log(new Error().stack)
hay una función para la que: console.trace()
En caso de que no desee log to console puede obtener el valor de cadena de seguimiento de pila usando new Error().stack
No tenía idea de que el método existiera ... ¡Lo intentaré! –
Ya, pero ¿y si necesitaras ... iono ... pasarlo, o hacer algo con él? Las funciones de la consola se llaman funciones de "ayuda" por una razón: son solo para que pueda ser realmente flojo en casos específicos;) –
que suena como un gran "qué pasaría si" basado en la pregunta original, pero déjame actualizar para eso. – Benja
Consulte callsite, esto toma el sta ck object para que pueda usarlo como quiera (y como un objeto, en lugar de una cadena). Es bastante impresionante, agradable y simple. Consulte this para obtener más información sobre cómo jugar con la pila
Existen ya algunos registradores excelentes para Node.js, pero construí un registrador que genera una salida coloreada, simple y un breve seguimiento de la pila. No anula console.log, que me parece que es útil. Si está interesado, puede encontrarlo here, node-logger.
Esto es genial, lo voy a comprobar. –
La implementación de callsite es consistente con la sugerencia de @Benja. –
Si utiliza winston, se puede añadir lo siguiente:
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;
}
y luego obtener los registradores de Winston con trazas de la pila. También está en a gist.
¿De qué está hablando el "paquete de seguimiento de pila" en Rails? –
He actualizado la pregunta para agregar un enlace. –
Posible duplicado de [Cómo imprimir un seguimiento de pila en Node.js?] (Http://stackoverflow.com/questions/2923858/how-to-print-a-stack-trace-in-node-js) –