Cómo iniciar el seguimiento de la pila en node.js

Buscando un node.js paquete que se encarga de seguimiento de pila similar a cómo se hace en RoR:

Rails: el Registro de la totalidad de la traza de la pila de una excepción

InformationsquelleAutor Chris Abrams | 2012-03-04

4 Kommentare

  1. 34

    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 un error para el propósito de obtener la traza de la pila

    console.log(new Error().stack)
    • Sería necesario (new Error()).stack. new Error().stack obtendría Error().stack y, a continuación, tratar de construir algo de ella
    • no, eso no es cierto en js el new operador siempre tiene prioridad.
    • En realidad se debe utilizar console.error en lugar de console.log. Pueden aparecer a hacer la misma cosa, pero en realidad el uso de la antigua salidas a stderr en lugar de stdout.
    • Especialmente útil en electron aplicaciones donde console.trace() no siempre funciona.
  2. 7

    hay una función para que: console.trace()

    En caso de que no quieras para iniciar la consola puede obtener la traza de la pila de la cadena de valor mediante new Error().stack

    • Yo no tenía idea de que el método que existían..voy a darle una oportunidad!
    • Ya, pero lo que si le tiene que gustar.. iono.. pasen alrededor, o hacer algo con ella? La consola se llama a las funciones de «ayuda» de funciones por una razón – son sólo así puede ser muy perezoso en casos específicos ; )
    • que suena como un gran «si» basado en la pregunta original, pero me dejaba actualizar por que.
    • No es un gran whatif a todos. Me informan mis mensajes de error a un registro centralizado de la tienda. Gracias por la actualización!
  3. 7

    Si utiliza winston, puede añadir esto:

    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 de obtener winston registradores con seguimientos de pila. También está en un gist.

  4. 0

    Retirar callsite, este agarra la pila de objetos así que usted puede utilizar cualquier forma que le guste (y como un objeto, en lugar de una cadena). Es bastante impresionante, y agradable y simple. Echa un vistazo este para obtener más información sobre jugar con la pila

    Hay un par de excelentes registradores que hay para Node.js ya, pero he construido un registrador que las salidas de un coloreada, de resultados simple y breve seguimiento de la pila. No, no invalidan la consola.de registro, lo que me parece ser muy útil. Si usted está interesado, usted puede encontrar aquí, el nodo-logger.

    • La aplicación de callsite es consistente con la sugerencia de @Benja.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea