#flutter #dart #logging
#трепетание #дротик #ведение журнала
Вопрос:
У меня есть CustomLogger
класс, которому я передаю Logger
объект. Теперь всякий раз, когда я вызываю метод logger из CustomLogger
класса, журналы печатаются дважды. Я создал этот класс 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
└────────────────────────────
Ответ №1:
Я понял, почему он печатает [null,null]
после долгой отладки, и просмотрел библиотечный код. На самом деле это error
аргумент.
logger.d
имеет message
в качестве требуемого позиционный аргумент и error
, stackTrace
как необязательный, поэтому, когда мы вызываем logger.d(message,[error,stacktrace])
аргумент ошибки, он становится [error,stackTrace], и он печатает то error
, что есть [null,null]
.
Итак, правильный способ вызова logger.d'
из класса-оболочки — это logger.d(message,error,stackTrace)
.