logToConsole function

void logToConsole(
  1. LogMessage message,
  2. LogLevel minimumLogLevel
)

Logs a message to the console with formatting and structured data

Implementation

void logToConsole(LogMessage message, LogLevel minimumLogLevel) {
  if (message.logLevel.index < minimumLogLevel.index) return;

  final timestamp = DateTime.now().toIso8601String().substring(11, 19);
  final levelIcon = switch (message.logLevel) {
    LogLevel.trace => '🔎',
    LogLevel.debug => '🔍',
    LogLevel.info => 'â„šī¸ ',
    LogLevel.warn => 'âš ī¸ ',
    LogLevel.error => '❌',
    LogLevel.fatal => '🚨',
  };

  final tagStr =
      (message.tags?.isNotEmpty ?? false)
          ? '[${message.tags!.join(',')}] '
          : '';

  print('$timestamp $levelIcon $tagStr${message.message}');

  if (message.structuredData?.isNotEmpty ?? false) {
    for (final entry in message.structuredData!.entries) {
      print('  └─ ${entry.key}: ${entry.value}');
    }
  }

  if (message.fault case final fault?) {
    print(_formatMessage('***** Fault *****\n$fault', message.logLevel));
  }

  if (message.stackTrace case final stackTrace?) {
    print(
      _formatMessage('***** Stack Trace *****\n$stackTrace', message.logLevel),
    );
  }
}