log method

*<Null safety>*

void log (Level logLevel, dynamic message, [Object error, StackTrace stackTrace, Zone zone])

Implementation

void log(Level logLevel, message,
    [Object error, StackTrace stackTrace, Zone zone]) {
  Object object;
  if (isLoggable(logLevel)) {
    if (message is Function) {
      message = message();
    }

    String msg;
    if (message is String) {
      msg = message;
    } else {
      msg = message.toString();
      object = message;
    }

    if (stackTrace == null && logLevel >= recordStackTraceAtLevel) {
      stackTrace = StackTrace.current;
      error ??= 'autogenerated stack trace for $logLevel $msg';
    }
    zone ??= Zone.current;

    var record =
        LogRecord(logLevel, msg, fullName, error, stackTrace, zone, object);

    if (parent == null) {
      _publish(record);
    } else if (!hierarchicalLoggingEnabled) {
      root._publish(record);
    } else {
      var target = this;
      while (target != null) {
        target._publish(record);
        target = target.parent;
      }
    }
  }
}