我有一个小问题想知道 log4js 库是否是异步的。我试图找到 log4js 文档但没有运气。我想在我的节点 js 应用程序中使用它,但在此之前我想知道它是否异步?
问问题
1680 次
1 回答
4
Logger 本身是异步的,但它使用的 appender 可能不是。
例如,您将 log4js 记录器与console
作为 appender 一起使用。请注意,node.js中的控制台从 0.6 版开始是同步的。
现在运行日志函数会创建一个 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 实现。您可以在此处查看所有可用的附加程序。
file.js是异步的,而console和fileSync是同步的。
很快, logger 将请求传递给writer,它是否同步取决于 writer 的规范。实际上有很好的理由说明控制台是同步的。
于 2014-08-27T09:35:38.877 回答