queueLog method

void queueLog(
  1. LogEntry log
)

Queue a log entry for syncing.

Implementation

void queueLog(LogEntry log) {
  if (!config.enabled || !config.isValid) return;

  // Check minimum level filter
  if (config.syncMinimumLevel != null) {
    final levelOrder = ['verbose', 'debug', 'info', 'warning', 'error', 'fatal'];
    final minIndex = levelOrder.indexOf(config.syncMinimumLevel!.toLowerCase());
    final logIndex = levelOrder.indexOf(log.level.name.toLowerCase());
    if (logIndex < minIndex) return;
  }

  // Priority queue for errors
  final isError = log.level.name.toLowerCase() == 'error' || log.level.name.toLowerCase() == 'fatal';

  if (isError && config.prioritizeErrors) {
    _priorityLogs.add(log);
    // Trigger immediate sync for errors
    _flushNow();
  } else {
    _pendingLogs.add(log);

    // Enforce max queue size
    while (_pendingLogs.length > config.maxQueueSize) {
      _pendingLogs.removeFirst();
    }
  }

  // Check if batch threshold reached
  if (_pendingLogs.length >= config.batchSize) {
    _flushNow();
  }
}