node.js - 当logstash服务器断开连接时,nodejs中出现ECONNREFUSED错误

标签 node.js tcp logstash bunyan

我正在使用node-bunyanbunyan-logstash-tcp在我的nodejs应用程序中将日志发送到logstash(1.4.2)和elasticsearch(1.4.2)。

每当logstash服务器断开连接或无法访问时,我的nodejs应用程序就会崩溃,并出现以下错误

ERROR
-------
events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: connect ECONNREFUSED
    at errnoException (net.js:904:11)
    at Object.afterConnect [as oncomplete] (net.js:895:19)

bunyan-logstash-tcp 实际上应该处理这个错误。 谁能帮我解决这个nodejs崩溃问题。

最佳答案

我能够解决这个问题。 创建 TCP Bunyan 流时需要处理错误事件

stream: bunyantcp.createStream({
        host: '127.0.0.1',
        port: 9998
    }).on('error', console.log)

bunyan-logstash-tcp中没有提到这一点文档,但存在于示例代码中。

更新:示例配置

this.log = bunyan.createLogger({
name: name,
streams: [
    {
      level: 'error', 
      type: 'raw',
      serializers: bunyan.stdSerializers,
      stream: bunyantcp.createStream({
          application: process.title,
          max_connect_retries: 10, // Don't give up on reconnecting
          retry_interval: 1000 * 60     // Wait 1s between reconnect attempts
      }).on('error', console.log)
    }
  ],
  level: 'debug'
});

关于node.js - 当logstash服务器断开连接时,nodejs中出现ECONNREFUSED错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30389014/

相关文章:

regex - 使用正则表达式检查字符串是否以数字开头

node.js - 第一个Alexa技能

java - 使用 java 服务器处理对 XML 文件的并发访问

ssh - 基于 SSH 和 MySQL Workbench 的标准 TCP/IP

json - 为什么我的 Linux 版本的 Logstash 不通过换行写入输出文件

elasticsearch - 删除索引后,它是完全从elasticsearch中清除掉的,还是仅在kibana中不显示?

用于聊天应用程序的 Python 或 Node

node.js - Nodejs 将附件发布到 JIRA

node.js - 如何在 Express 中添加到 'view options'?

sockets - WebSockets 相对于 TCP/IP 的优势