class LogMessageDto { final DateTime timestamp; final String serviceName; final String channel; final String level; // 'Information', 'Warning', 'Error', 'Debug', 'Trace' final String message; final String? exception; const LogMessageDto({ required this.timestamp, required this.serviceName, required this.channel, required this.level, required this.message, this.exception, }); factory LogMessageDto.fromJson(Map json) { DateTime parsedTime = DateTime.now(); if (json['timestamp'] != null) { parsedTime = DateTime.tryParse(json['timestamp'].toString()) ?? DateTime.now(); } return LogMessageDto( timestamp: parsedTime.toLocal(), serviceName: json['serviceName']?.toString() ?? '', channel: json['channel']?.toString() ?? '', level: json['level']?.toString() ?? 'Information', message: json['message']?.toString() ?? '', exception: json['exception']?.toString(), ); } Map toJson() { return { 'timestamp': timestamp.toUtc().toIso8601String(), 'serviceName': serviceName, 'channel': channel, 'level': level, 'message': message, 'exception': exception, }; } }