log method

  1. @override
void log(
  1. LogLevel level,
  2. String message, {
  3. Map<String, dynamic>? context,
  4. StackTrace? stackTrace,
})
override

Implementation

@override
void log(
  LogLevel level,
  String message, {
  Map<String, dynamic>? context,
  StackTrace? stackTrace,
}) {
  if (!level.isAtLeast(_minimumLevel)) return;

  final logEntry = _formatJson
      ? _formatJsonLog(level, message, context, stackTrace)
      : _formatTextLog(level, message, context, stackTrace);

  // On Windows (and in general), a String can contain malformed UTF-16
  // (e.g. from decoding arbitrary bytes). Ensure logging never throws.
  final bytes = _safeUtf8Encode('$logEntry\n');

  if (_isRotating) {
    _buffer.add(bytes);
    return;
  }

  if (_shouldRotate(bytes.length)) {
    _rotate(bytes);
    return;
  }

  _write(bytes);
}