2017-09-22 2 views
0

Ich habe Winston verwendet, um Protokolle für fast ein Jahr zu logmatic zu schieben, und diese Woche musste ich es ausschalten, weil ich zufällige Verbindungsfehler, die den Produktionsserver abstürzen. Ich habe es als zeitliche Fixierung ausgeschaltet, aber ich würde etwas wie einen Versuch/Fang bevorzugen, den ich ausprobiert habe, aber nicht funktioniert hat.Fangfehler: getaddrinfo ENOTFOUND mit Winston

Hier ist meine aktuellen Code:

const Winston = require('winston') 
require('winston-logstash') 

const transports = [] 
transports.push(new Winston.transports.Console({ 
    level: 'debug', 
    colorize: true, 
    prettyPrint: true 
})) 

try { 
    transports.push(new (Winston.transports.Logstash)({ 
    level: 'info', 
    port: 10514, 
    host: 'api.logmatic.asdsadio', 
    meta: { logmaticKey: 'Xen03ppdS_Cm24hxbz1_kg' }, 
    node_name: 'api' 
    })) 

    const logger = new (Winston.Logger)({ 
    transports: transports 
    }) 
} 
catch (err) { 
    console.log(err) 
} 

module.exports = logger 
+0

Warum müssen Sie versuchen/fangen, wenn Sie es ausgeschaltet haben? – alexmac

+0

Und try/catch sollte gesetzt werden, um die Initialisierung nicht zu übertragen, sondern an jeden aufrufenden Logger. () 'Anruf. Aber es macht keinen Sinn. – alexmac

+0

@alexmac, damit ich es sicher einschalten kann, nutzt der Code, den ich geteilt habe, den Dienst. Das ist meine lokale Umgebung, in der Produktion ist es ausgeschaltet –

Antwort

1

Sie tun konnte

const methods = ['info', 'warn', 'error']; 
methods.forEach(method => { 
    logger[method] = new Proxy(logger[method], { 
     apply: function(target, thisArg, args) { 
      try { 
       target.call(logger, ...args); 
      } catch(error) { 
       console.error(error); 
      } 
     }, 
    }); 
}); 

nur nach dem Logger initialisiert, während Sie herauszufinden, warum Sie Verbindungen Fehler. Zumindest sollte es Abstürze verhindern. Es wird im Grunde jeden Anruf zu logger.info, logger.warn, logger.error abfangen und wickeln sie um einen Versuch zu fangen.

+0

Ich nehme an, es funktioniert, seit es keine Abstürze mehr gab. Vielen Dank! –