Node.js log4j-like 日志系统
Posted
技术标签:
【中文标题】Node.js log4j-like 日志系统【英文标题】:Node.js log4j-like logging system 【发布时间】:2011-11-29 11:46:38 【问题描述】:你能给我推荐一个适合 node.js 的类似 log4j 的日志系统吗?
【问题讨论】:
【参考方案1】:它不是 log4j 端口,但 Winston 提供了一些类似的功能。 https://github.com/indexzero/winston
【讨论】:
【参考方案2】:我认为 Winston 确实不错,但是既然您提到了 log4j,您可能对节点端口感兴趣:node-log4js
【讨论】:
【参考方案3】:轻量级解决方案
我查看了许多记录器,但我无法找到一个轻量级的解决方案 - 所以我决定在 github 上发布一个简单的解决方案。
保存文件 给你一个漂亮的输出(我们都喜欢) 易于使用希望对你有所帮助。
设置
https://github.com/bluejamesbond/Scribe.js
PS:如果有任何问题,如果你能修复它然后提出拉取请求,我将不胜感激。否则,我们非常欢迎您作为问题发布。
【讨论】:
【参考方案4】:你也可以试试看https://www.npmjs.org/package/bunyan
它的输出是 JSON 格式,可以有不同的输出流,如 stoud、日志文件以及在旋转/回收之前要维护的文件数量的选项,类似于 Log4j。
根据 npm 上的文档,Joyent 也在生产中使用它。
【讨论】:
【参考方案5】:我在 log4js-node(或简称 log4js)方面取得了一些成功。我什至可以使用 watchr 来跟踪(监视)log4js 配置文件,并设置日志级别,而无需在我的 Angular 中间件中重新启动我的 .js 代码。一个在文档中不明显的棘手建议是,您可以如何处理关闭/重新启动的回调,以便在观察者侦听器的“更新”开关中进行热配置更改。
console.log('shutting down log4js');
log4js.shutdown((err) =>
if (err!=undefined)
console.log('shutting down log4js msg: ' + err);
);
console.log('rebooting log4js');
log4js.configure('./myconfigfile.json');
logger = log4js.getLogger();
【讨论】:
【参考方案6】:所有不要使用“log4j”库。使用原始的 log4js。 log4j 是原版的复制品,是一种被黑的模式。
有关更多信息,请查看以下文章: https://www.theguardian.com/technology/2021/dec/10/software-flaw-most-critical-vulnerability-log-4-shell
https://www.esecurityplanet.com/threats/apache-log4j-zero-day-puts-servers-at-risk/
https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java
【讨论】:
FWIW,原来是 log4j 而 log4js 是一个端口。此外,它已被修复。以上是关于Node.js log4j-like 日志系统的主要内容,如果未能解决你的问题,请参考以下文章