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 日志系统的主要内容,如果未能解决你的问题,请参考以下文章

项目日志的管理和应用 log4js-Node.js中的日志管理模块使用与封装

如何在 Winston/Node.js 中设置日志级别

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

Node.js OpsWorks 层控制台日志

AWS EB Node.JS 日志到 CloudWatch

Node.js日志框架选型比較:Bunyan