我有一个小问题想知道 log4js 库是否是异步的。我试图找到 log4js 文档,但没有运气。我想在我的 Node js 应用程序中使用它,但在此之前我想知道它是否是异步的?

最佳答案

Logger 本身是异步的,但它使用的 appender 可能不是。

例如,您正在使用带有 console 作为附加程序的 log4js 记录器。
请注意,node.js 中的控制台从 0.6 版开始是同步的。

现在运行 log 函数会创建一个 LogEvent 对象并发出 log 事件:

Logger.prototype.log = function() {
  var args = Array.prototype.slice.call(arguments)
  , logLevel = levels.toLevel(args.shift())
  , loggingEvent;
  if (this.isLevelEnabled(logLevel)) {
    loggingEvent = new LoggingEvent(this.category, logLevel, args, this);
    this.emit("log", loggingEvent);
  }
};

现在由事件监听器决定它是否是异步的。这意味着异步与否完全取决于 appender 实现。你可以看到所有可用的 appender here

file.js 是异步的,而 console 和 fileSync 是同步的。

很快,记录器将请求传递给编写器,它是否同步取决于编写器的规范。控制台是同步的实际上有很好的理由。

关于javascript - log4js 库是异步的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25522538/

10-12 16:24