需要对带有 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-collector
和 your-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.JS 的 MongoDB:$where 子句性能