【问题标题】:Writing a custom winston-transport: why to emit logged event?编写自定义 winston-transport:为什么要发出记录的事件?
【发布时间】:2021-10-26 19:41:15
【问题描述】:

我正在开发一种定制的温斯顿运输工具;文档(剪切和粘贴如下)非常清晰......

class CustomTransport extends Transport {
  log(info, callback) {
    setImmediate(() => {
      this.emit('logged', info);
    });

    // Perform the writing to the remote service

    callback();
  }
};

...但是,这是this.emit('logged', info); 的含义,为什么在setImmediate 中?

  1. 我会说调用callback就足以让调用者知道写操作已经执行了,
  2. 我们可以说 setImmediate 需要在 Node.js 事件循环中触发事件 after IO 处理程序,但绝对不能保证下一个 IO 循环足以满足我的自定义写入完成,所以
  3. 为什么在写操作之前在之前触发'logged',而不是触发'logging'?

我问了同样的问题to the maintainers,但结果是……风滚草。

谁能为我揭开那个神秘事件背后的秘密?

【问题讨论】:

    标签: node.js winston


    【解决方案1】:

    厌倦了沉默,我使用自定义的 winston 传输进行了测试,该传输不会触发 logged 事件:我编写了 3GB 日志和 30,000,000 次 logger.info 调用,我没有任何问题,应用程序也没有增长一个字节内存使用量。

    我的结论是:触发该事件完全没有用。

    【讨论】:

      猜你喜欢
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      相关资源
      最近更新 更多