【发布时间】:2018-01-01 22:59:58
【问题描述】:
问题
Winston 提供winston.loggers.get("logger name") 以获得记录器。如何获取使用 winston.createLogger(options) 创建的记录器(它没有名称)
我为什么要问
我使用winston.createLogger(options) 在文件中创建了一个记录器,然后使用module.exports 导出创建的记录器。
我想在整个应用程序中使用这个记录器,但每次我require("") 它时,createLogger(options) 都会被调用,因此每次都会创建一个新记录器。
代码示例
const winston = require('winston');
// this logger does not have a name!
// Thus, how do I get it.
const logger = winston.createLogger({});
module.exports = logger;
【问题讨论】:
-
是的,如果你想通过 require 处理多个文件,这是唯一的方法,它就像一个流一样简单。 (我想你不使用 cluster mod 或 fork,因为如果是,你可以在某些情况下传递参数,假设另一个文件作为 child_process 执行)
-
您如何使用您的记录器模块?我认为您正在做的事情没有任何问题会导致创建多个记录器。 Node 缓存第一个 require() 中的 module.exports 并将其返回给后续调用。
-
我担心多个文件会包含 require('logger.js'),导致记录器被多次创建。我不知道节点缓存 require() 所以我想我的担忧是无效的。谢谢吉姆·鲍德温
标签: javascript node.js logging winston