在 Node.js 应用程序中,日志记录是一个必不可缺的部分。日志可以帮助我们了解系统运行的情况,发现潜在的问题并更好地理解应用程序的运行状况。在实践中,我们通常会使用文件系统或数据库来存储日志信息。但是,这些方法并不总是最好的解决方案。
在本文中,我们将讨论一种更为简洁而灵活的方法,即使用 winston-logstash-transport 记录日志到 Logstash。Logstash 是一个强大的开源日志记录管道工具,它可将不同来源的数据汇聚在一起,对其进行处理并导出到不同目的地。winston-logstash-transport 是 Winston 日志库的一个插件,它可以将应用程序中的日志信息发送到 Logstash。
安装
在使用 winston-logstash-transport 之前,我们需要安装它。运行以下命令:
$ npm install winston winston-logstash-transport --save
安装好后,我们需要创建一个 winston 的 logger 实例。在这个实例中,我们需要创建一个 logstash transport,并将其添加到实例中。底下是一个简单的例子:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------------- - -------------------------------------- ----- ------ - ---------------------- ----------- - --- ------------------- ----- ------------ ----- ----- ----------- ----- -- - ---
在这个例子中,我们使用了 winston.createLogger 方法创建了一个 logger 实例,并使用了 winston-logstash-transport 创建了一个 logstash transport。如果要使用 SSL 加密发送数据,您可以将 ssl_enable 设置为 true。
发送日志
在创建了 logger 实例之后,我们可以使用 logger.info、logger.warn、logger.error 等方法来记录不同级别的日志。这些方法都接受一个字符串作为参数,该字符串表示要记录的日志信息。下面是一个例子:
logger.info('Hello, Node.js!'); logger.warn('Warning: something happened!'); logger.error('Error: something went wrong!');
注意,我们只是将日志发送到 logstash transport,而不是直接将其记录在本地文件系统或数据库中。
配置 Logstash
在我们可以开始接收从应用程序中发送的日志之前,我们需要在 Logstash 中进行一些配置。首先,我们需要在 Logstash 中创建一个接收器。有许多不同的输入插件可供选择,包括 TCP、UDP、HTTP 和 stdin 等。在本文中,我们将使用 TCP 输入插件。
在 Logstash 的配置文件中,我们需要添加以下内容:
input { tcp { port => 5000 codec => json_lines } }
在这个配置中,我们使用 tcp 输入插件在本地 5000 端口上监听传入的连接。我们还使用 json_lines 编解码器,将传入的数据解析为 JSON 格式。
记录的数据
到目前为止,我们已经知道如何设置 winston-logstash-transport 来向 Logstash 发送日志。但是,为了更好地理解记录到 Logstash 中的数据,请查看下面的示例:
{ "message": "This is a log message", "level": "info", "timestamp": "2022-02-22T16:21:28.419Z", "application": "myapp", "hostname": "myhost", "pid": 1234 }
在这个示例中,我们可以看到 winston-logstash-transport 默认将日志数据格式化为 JSON(除非其他指定)。当一个日志事件被发送时,它会被转换为一条 JSON 记录。消息、级别、时间戳、应用程序的名称、主机名和进程 ID 等数据都将被包含在这条记录中。
结论
在本文中,我们介绍了如何使用 winston-logstash-transport 记录 Node.js 应用程序中的日志到 Logstash。记住,将日志记录到中央位置可以帮助我们更好地理解应用程序的运行情况,并为故障排除提供更好的工具。如果您还没有使用中央式日志记录来跟踪应用程序中的问题,那么现在就是时候了。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/671c912f9babaf620fb15a7e