log method

void log(
  1. LogLevel level,
  2. String message, {
  3. String? tag,
  4. Object? error,
  5. StackTrace? stackTrace,
  6. Map<String, dynamic>? context,
})

Log a message at the specified level

Implementation

void log(
  LogLevel level,
  String message, {
  String? tag,
  Object? error,
  StackTrace? stackTrace,
  Map<String, dynamic>? context,
}) {
  // Quick exit if level is not enabled
  if (!level.isEnabled(minimumLevel)) {
    return;
  }

  // Create log entry
  final entry = LogEntry(
    timestamp: DateTime.now(),
    level: level,
    message: message,
    tag: tag,
    error: error,
    stackTrace: stackTrace,
    context: {
      ..._defaultContext,
      if (context != null) ...context,
    },
    loggerName: name,
  );

  // Apply filters
  bool shouldLog = true;
  for (final filter in _filters) {
    if (!filter.shouldLog(entry)) {
      shouldLog = false;
      break;
    }
  }

  if (!shouldLog) return;

  // Add to stream
  _logController.add(entry);

  // Send to all sinks asynchronously
  _sendToSinks(entry);
}