首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获错误:使用温斯顿的getaddrinfo ENOTFOUND

捕获错误:使用温斯顿的getaddrinfo ENOTFOUND
EN

Stack Overflow用户
提问于 2017-09-22 20:39:51
回答 1查看 544关注 0票数 1

我使用温斯顿将日志推到逻辑学已经将近一年了,这周我不得不关闭它,因为我得到了随机连接错误,从而使生产服务器崩溃。我把它作为临时修复程序关闭了,但是我更喜欢尝试/捕捉之类的东西,我尝试了,但没有成功。

以下是我的当前代码:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-22 21:53:42

你可以

代码语言:javascript
复制
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);
            }
        },
    });
});

刚刚初始化你的记录器,而你正在弄清楚为什么你得到连接错误。至少,它应该能防止撞车。它将基本上拦截对logger.infologger.warnlogger.error的每个调用,并将它们封装在一个try catch中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46372868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档