首页 > 解决方案 > 颤振记录器被调用两次

问题描述

我有一个CustomLogger向其传递Logger对象的类。现在,每当我从CustomLogger类中调用 logger 方法时,日志都会打印两次。我创建了这个 CustomLogger 类,因为我计划将这些日志发送到服务器并且不想为它调用单独的方法。

这是我创建CustomLogger类对象的地方

var logger = CustomLogger(
  logger: Logger(
    printer: PrettyPrinter(
      methodCount: 0,
      errorMethodCount: 5,
      colors: true,
    ),
  ),
);

这是我的CustomLogger

class CustomLogger {
  Logger logger;

  CustomLogger({
    @required this.logger,
  });

  /// Log a message at level [Level.debug].
  void d(dynamic message, [dynamic error, StackTrace stackTrace]) {
    logger.d(message, [error, stackTrace]);
  //TO Do : send log to server
  }
}

当我打电话时logger.d("test log");,它首先打印null然后打印日志

 ┌────────────────────────────
 │ [null, null]               
 ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
 │  test log     
 └────────────────────────────

标签: flutterdartlogging

解决方案


我想通了为什么它[null,null]在经过大量调试并通过库代码后打印。这实际上是error论据。

logger.d具有message所需的位置参数和可选的errorstackTrace因此当我们调用logger.d(message,[error,stacktrace])错误参数时,它会变成 [error,stackTrace] 并且它正在error打印[null,null].

logger.d'所以从包装类调用的正确方法是logger.d(message,error,stackTrace).


推荐阅读