log method

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

Logs a message with the specified level and optional metadata.

level The severity level of the log message. message The message to log. source Optional source identifier (e.g., client name, agent name). metadata Optional additional data related to the log entry.

Implementation

@override
void log(LogLevel level, String message, {String? source, Map<String, dynamic>? metadata}) {
  if (_sink == null) return;

  try {
    final timestamp = DateTime.now().toIso8601String();
    final sourceStr = source != null ? '[$source] ' : '';
    final levelStr = level.name;

    _sink!.writeln('$timestamp [$levelStr] $sourceStr$message');

    // Log metadata if available
    if (metadata != null && metadata.isNotEmpty) {
      _sink!.writeln('  Metadata: $metadata');
    }
  } catch (e) {
    print('Error writing to log file: $e');
  }
}