将 javascript Winston 工厂 class 转换为 ES6

Converting javascript Winston factory class to ES6

我目前正致力于将 Javascript 中的 Winston Factory 转换为用 ES6 编写的 Typescript 文件。下面的示例给了我一个 Winston 记录器,我可以通过导入它并调用 log.info(); 在其他 类 中使用它可以给每个文件的记录器。

module.exports = lab => 
 winston.createLogger({
  level: "verbose",
  transports: [new transports.Console({
    format: combine(colorize(), label({
      label: lab
    }), timestamp(), ms(), logFormat),
  }), ],
});

我想在我的 Typescript 应用程序中使用这种方法,但我很难让它与 ES6 导入语句一起使用。这是我到目前为止想到的,这种方法允许我将记录器导入另一个文件,但我无法访问记录器功能。

export = lab =>
  winston.createLogger({
    level: "verbose",
    transports: [
      new transports.Console({
        format: combine(
          colorize(),
          label({ label: lab }),
          timestamp(),
          ms()
        ),
      }),
    ],
  });

任何输入、提示甚至是旧文件中代码结构的名称,以便我可以Google了解更多信息,我们将不胜感激。

编辑

我的问题: 我使用 "fileLocation" 中的导入日志来导入文件。 当我调用 log 时,我希望获得 winston logger 函数,但我得到了以下函数。

问题是您正在导出一个函数,所以您导入的 log 是函数 (lab) => ...

如果你这样做:

const myLog = log();

myLog 中您会找到 winston

创建的对象