2017-09-06 1 views
1

L'utilisation des enregistreurs winston pour écrire du contenu dans les fichiers, mais cela ne fonctionne que lorsque customlogger.error est utilisé. Si le noeud sort une erreur de référence comme ci-dessousComment exporter le fichier process.stderr.write vers le fichier winston

ReferenceError: aksbd is not defined 
at /home/nigilan/Desktop/homepagelogger/app.js:53:20 
at Layer.handle [as handle_request] (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/layer.js:95:5) 
at next (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/route.js:137:13) 
at Route.dispatch (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/route.js:112:3) 
at Layer.handle [as handle_request] (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/layer.js:95:5) 
at /home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/index.js:281:22 
at Function.process_params (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/index.js:335:12) 
at next (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/index.js:275:10) 
at /home/nigilan/Desktop/homepagelogger/app.js:38:5 
at Layer.handle [as handle_request] (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/layer.js:95:5) 

Comment utiliser winston pour stocker les erreurs comme ci-dessus?

P.S. La journalisation de l'exception non gérée est que le serveur nodejs fonctionne correctement.

+0

Ce code fonctionne très bien, mais winston serait très utile. Process.stderr.write = function (message) { fs.appendFile ('k.log', message, fonction (err) { if (err) throw err; }); } – Nigilan

Répondre

0
` 
function formatArgs(args){ 
    return [util.format.apply(util.format, Array.prototype.slice.call(args))]; 
} 
console.info = function(){ 
    customlogger.info.apply(customlogger, formatArgs(arguments)); 
}; 
console.warn = function(){ 
    customlogger.warn.apply(customlogger, formatArgs(arguments)); 
};` 

Ici, vous pouvez également utiliser l'enregistreur par défaut de winston au lieu de votre enregistreur personnalisé. Le code Gist ci-dessous a la réponse parfaite pour this.