log method

  1. @override
  2. @protected
void log(
  1. FLoggerLevel level,
  2. FLoggerLabels labels,
  3. String message, [
  4. FException? exception,
])
override

Override this method to implement custom logger

Implementation

@override
@protected
void log(
  FLoggerLevel level,
  FLoggerLabels labels,
  String message, [
  FException? exception,
]) {
  final String name = this.name ?? "Unnamed";

  final StringBuffer logMessageBuffer = StringBuffer();
  logMessageBuffer
      .write("${DateTime.now().toUtc().toIso8601String()} $name [$level]");
  for (final entry in labels.entries) {
    logMessageBuffer.write("(${entry.key}:${entry.value})");
  }

  logMessageBuffer.write(" ");
  logMessageBuffer.writeln(message);

  if (exception != null) {
    logMessageBuffer.writeln(exception.toString());
  }

  switch (level) {
    case FLoggerLevel.trace:
    case FLoggerLevel.debug:
    case FLoggerLevel.info:
      stdout.writeln(logMessageBuffer);
      break;
    case FLoggerLevel.warn:
    case FLoggerLevel.error:
    case FLoggerLevel.fatal:
      stderr.writeln(logMessageBuffer);
      break;
    default:
      throw FExceptionInvalidOperation("Unsupported log level '$level'.");
  }
}