是否可以同时使用Winston日志记录和调试模块?

Qiu*_*ang 5 logging node.js express winston

我使用Winston日志记录是因为我使用了它的功能,例如不同的日志记录级别,多种传输方式等。

但我也喜欢debug的命名空间功能。此外,express已在使用它。那么是否可以将它们一起使用,例如让Winston Logging具有名称空间?

Qiu*_*ang 11

在使用了几种不同的记录器之后,我对 Nodejs 记录器有了更多的了解,现在我相信它们不应该一起使用,因为它们是为不同的目的而设计的。另一方面,morgan和winston可以一起使用,例如Node.js -logging / Use morgan和winston,morgan和debug也可以一起使用,Nodejs - How to use morgan with debug

但首先,引用Logging in Node.js did right

由于 NPM 提供了大量模块,因此一开始在 Node.js 应用程序中设置正确的日志记录可能会有点困难。

当我让摩根、温斯顿一起调试时,这确实是我的情况。但后来我意识到它们有重叠的不同目的。因此,当我真正调试问题时,我使用 debugjs,而不是使用 console.log(有人说 debugjs 不是记录器)。完成后,我关闭该调试。

Morgan是专门记录express HTTP请求的。最好在 dev/prod 环境中出于不同目的使用它。

在开发/生产环境中为 Winston 使用不同的日志级别可能是一种常见的做法。我还可以使用express-winston来记录HTTP 请求,而不是使用morgan。

Winston 使用不同的日志级别来关闭某些日志,不像 debugjs 使用命名空间来关闭日志,所以我认为它们不能一起工作。

--- 2021 年更新 ---

自从我在 2018 年第一次回答自己的问题以来,我多次被问到与日志级别相关的问题。我发现针对 debugjs 提出的问题证实了我所说的有关调试的内容,引用其当前维护者的答案

Debug 不是通用日志库,它旨在有条件地打开调试日志。没有日志级别的概念。相反,将您的命名空间分解为不同的组件并启用您关心的组件