web-dev-qa-db-fra.com

Comment enregistrer les erreurs de noeud avec winston logger?

Dans mon application de noeud, j'utilise le Winstonjs logger. Aujourd'hui, ma demande a semblé se bloquer, mais elle n'a pas réussi à enregistrer quelque chose. J'ai arrêté l'application et l'ai exécutée manuellement, ce qui m'a montré cette erreur 

ReferenceError: totalValue is not defined

J'ai clairement commis une erreur dans mon code, mais mon principal problème ici est que je ne pouvais pas le savoir à partir des journaux Winston.

J'ai collé mon implémentation Winston ci-dessous. J'ai créé cela pour pouvoir utiliser simplement log('The log message');. Mais cela ne consigne pas les erreurs de nœud qui se produisent. 

Est-ce que quelqu'un sait comment je peux obtenir chaque erreur de noeud survenant dans mes journaux Winston?

const myFormat = winston.format.printf(info => {
    return `${info.timestamp} ${info.level}: ${info.message}`;
});
const logger = winston.createLogger({
    level: 'info',
    format: winston.format.combine(winston.format.timestamp(), myFormat),  // winston.format.json(),
    transports: [
        new winston.transports.File({filename: 'logs/error.log', level: 'error'}),
        new winston.transports.File({filename: 'logs/combined.log'}),
    ]
});
function log(message, level='info'){
    if (typeof message === 'object'){
        message = JSON.stringify(message);
    }
    logger[level](message);
}
4
kramer65

Winston peut enregistrer les exceptions pour vous. D'après les documents: Exceptions

Avec winston, il est possible de capturer et de consigner des événements non capturés à l'exception de votre processus. Avec votre propre instance de consignateur, vous pouvez activer ce comportement lors de sa création ou ultérieurement dans le cycle de vie de vos applications:

const { createLogger, transports } = require('winston');

// Enable exception handling when you create your logger.
const logger = createLogger({
  transports: [
    new transports.File({ filename: 'combined.log' }) 
  ],
  exceptionHandlers: [
    new transports.File({ filename: 'exceptions.log' })
  ]
});

// Or enable it later on by adding a transport or using `.exceptions.handle`
const logger = createLogger({
  transports: [
    new transports.File({ filename: 'combined.log' }) 
  ]
});

// Call exceptions.handle with a transport to handle exceptions
logger.exceptions.handle(
  new transports.File({ filename: 'exceptions.log' })
3
gforce301