gpt4 book ai didi

node.js - 将 Bunyan 应用于大型 Node 应用程序的推荐方法?

转载 作者:搜寻专家 更新时间:2023-10-31 22:17:48 24 4
gpt4 key购买 nike

我正在开发一个包含多个模块的 Node 应用程序。我现在正在尝试正确设置日志记录(一开始就应该这样做),并考虑使用 Bunyan。

this answer 中所建议的那样,导出一个单独的 logger 模块,然后由其他模块需要会更好吗?或者直接在每个模块中定义一个新的 bunyan logger 实例并相应地配置它?为了重用,我想是前者,但我不知道这是否会限制 future 。

如果我有一个像这样定义的记录器

var bunyan        = require('bunyan');
var logger = bunyan.createLogger({
name: "filter",
streams: [
{
level: 'info',
stream: process.stdout
},
{
level: 'error',
path: '../error.log'
},
{
level: 'debug',
path: '../debug.log'
}
]
});

module.exports = logger;

然后所有使用它的模块也将使用名称 filter 进行记录,而对于每个模块来说,记录一个更能代表自身的名称可能更有意义。

此外,我认为所有模块都应该将错误记录到同一个日志文件中是否正确? systemErr.log(以便更好地了解)或者他们应该记录到自己的错误日志中,例如module1Err.log, module2Err.log?

最佳答案

Would it be better to have a single logger module that is exported and then required by the other modules

。越简单越好。这也避免了日志设置的样板重复。

Also, am I right in thinking that all modules should log errors to the same log file e.g. systemErr.log (to allow a better overview) or should they log to their own error logs, e.g. module1Err.log, module2Err.log?

整个应用程序的一个文件。因为 bunyan 使用 ndjson 格式,所以在需要时过滤主日志文件非常容易。我推荐直接记录到 stdout 的简单性和灵 active ,并允许部署环境决定应该去哪里。这对于您可能不需要或不希望磁盘上的日志文件的开发也很方便。 upstartmultilog 等工具可以将您的标准输出日志正确写入磁盘并为您处理日志轮换。

一个额外的提示。在本地开发时,我用这样的东西运行我的应用程序:

node-dev --inspect server.js |\
tee -a log/app.ndjson.log | bunyan -o short
  • node-dev 当我更改代码时自动重启
  • --inspect 启用我可以附加到 chrome devtools 的调试器
  • tee将 stdout 复制到磁盘,因此如果我以后确实想返回并查看日志,我可以,但我不想在我的终端中看到完整的 ndjson 记录
  • bunyan -o short 向我的终端提供 pretty-print 输出,这正是我想要的本地开发

关于node.js - 将 Bunyan 应用于大型 Node 应用程序的推荐方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26650242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com