需要对带有 Node.js 的 SysLog 的建议

Posted

技术标签:

【中文标题】需要对带有 Node.js 的 SysLog 的建议【英文标题】:Need suggestion for SysLog with Node.js 【发布时间】:2011-09-29 23:36:23 【问题描述】:

我刚刚 npm install node-syslog 但它不起作用。

我有一个系统日志服务器(IP 地址和 local0)。

我正在寻找一个系统日志模块来帮助我将消息发布到系统日志。但我不知道我应该使用哪一个。请给我一些建议。谢谢。

哦..如果有一个好的系统日志解析器(node.js),也请告诉我。 :)

【问题讨论】:

【参考方案1】:

和你一样,我也在寻找 syslog 解决方案,直到我找到了这个意见:

日志是一个流,每个人都应该这样对待它们。 您的程序应该记录到 stdout 和/或 stderr 并忽略任何尝试 处理日志路径、日志轮换或通过 syslog 发送日志 协议。可以保留程序日志流的方向 运行时容器:本地终端或 IDE(开发中 环境),Upstart / Systemd 启动脚本(在传统的 托管环境),或像 Logplex/Heroku 这样的系统(在平台中 环境)。

https://adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/

现在我已经愉快地完成了我的搜索,我正在使用console.log

【讨论】:

我非常赞成这种方法! 它们更像是可靠的有序数据报而不是流。日志框架的优点是它们保留了日志消息边界。 (考虑带有回溯或 JSON 对象的日志)。 同意。但是,请考虑 your-app-a | common-log-collectoryour-app-b | common-log-collector...您的应用程序不应该在任何地方登录,除了 stdio。但是,您将需要一种在 common-log-collector 进程中使用 syslog 写入网络的方法,并且很可能是本地计算机。【参考方案2】:

我都用过

https://github.com/cloudhead/node-syslog

https://github.com/cconstantine/syslog-node

没有任何问题。

但是当我遇到你的情况时,我会跑:

 npm search $(what im looking for)

我运行了 npm search syslog,这是我的输出,希望对您有所帮助。

ain                  Syslog logging for node.js                                    =akaspin       (prehi
ain-tcp              Syslog logging for node.js, with syslog/TCP support           =andry1        2011-0
ain2                 Syslog logging for node.js. Continuation of ain               =phuesler      2012-0
ain2-fs              Syslog logging for node.js. Continuation of ain               =ossareh       2011-1
ain2-papandreou      Syslog logging for node.js. Continuation of ain               =papandreou    2012-0
artifi-glossy        Syslog parser and producer. It is fork of https://github.com/squeeks/glossy - pleas
beatit               Simple agent that can stay hooked on a log file (even if while log rotated and send
frontail             tail -F output in browser                                     =mthenw        2012-0
glossy               Syslog parser and producer                                    =squeeks       2012-0
netasqsyslog         Syslog for NETASQ security appliances                         =sdolard       2012-0
node-nativesyslog    javascript-only syslog module for NodeJS                      =janoszen      2011-1
node-syslog          Node module to support sending messages to syslog daemon      =schamane      2012-0
posix                The missing POSIX system calls                                =mel           2012-0
rconsole             'syslog.h' bindings with a revised console module             =tblobaum      2012-0
simplelogger         A simple logging solution supporting file, stdout and syslog output =ditesh 2011-06
splog                A NodeJS library which provides a syslog-like remote logging interface =mattbornski
syslog               Syslog-ng TCP client, with basic fault-tolerance.             =cloudhead     2011-0
syslog-node          A syslog server and realtime web view of syslog messages      =cconstantine  2011-0
syslogd-nodejs       syslogd in node.js with logging to cli, file, mongodb and via websockets =crahles 2
tails                Aggregate your syslog messages & filter for those that matter in real time. =porter
winston-syslog       A syslog transport for winston                                =indexzero     2011-0
winston-syslog-ain2  An ain2 based syslog transport for winston                    =lamtha        2012-0

【讨论】:

【参考方案3】:

我尝试了 npm 搜索中列出的大多数模块,但其中任何一个都没有成功。

幸运的是,最后我偶然发现了 rconsole,我发现它比其他任何一个都更容易配置和使用。

它允许您在开发过程中对标准输出进行着色和时间戳(以及跟踪等),这也很好。

要使用,只需 npm i rconsole,然后,来自文档:

require('rconsole')
console.set( facility: 'local0', title: 'basic' )
console.emerg('level 0')
console.alert('level 1')
console.crit('level 2')
console.error('level 3')
console.warn('level 4')
console.notice('level 5')
console.info('level 6')
console.log('level 6')

在 OSX 上,我使用 tail -f /var/log/system.log 检查我的系统日志

【讨论】:

【参考方案4】:

社区似乎没有在这里达成共识。我遇到的每个节点 syslog 项目都有长期悬而未决的问题,这些问题似乎非常重要(或者是鬼城)。

Winston 似乎是通用日志记录的最佳选择,并且可以使用 winston-syslog 传输。问题是它似乎存在一些非常重要的问题:https://github.com/indexzero/winston-syslog/issues

我想我自己试试 winston-syslog-ain2。

【讨论】:

【参考方案5】:

syslog-stream 使用本机 C 绑定为 syslog 创建可写流。它还包括测试。

然后您可以直接写入该流或作为另一个日志记录模块的输出。

【讨论】:

以上是关于需要对带有 Node.js 的 SysLog 的建议的主要内容,如果未能解决你的问题,请参考以下文章

将 Node 的“永久”日志记录到 syslog

带有 Node.JS 的 MongoDB:$where 子句性能

带有 Node.js 和 jQuery 的 CORS

带有预检的 Node.JS 中的跨域 POST 请求?

带有 Node.js 的 Heroku 上的 Tesseract-OCR

路径必须是一个字符串(需要带有node.js http模块的url)