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);
}
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' })