log method
Logs a message at the specified level.
Implementation
void log(
LogLevel level,
String message, {
Map<String, dynamic>? context,
Object? error,
StackTrace? stackTrace,
}) {
if (level.value < minLevel.value) {
return;
}
final logEntry = <String, dynamic>{
'timestamp': DateTime.now().toUtc().toIso8601String(),
'level': level.name,
'message': message,
};
if (serviceName != null) {
logEntry['service'] = serviceName;
}
if (version != null) {
logEntry['version'] = version;
}
// Merge default context with provided context
final mergedContext = <String, dynamic>{
...defaultContext,
if (context != null) ...context,
};
if (mergedContext.isNotEmpty) {
logEntry['context'] = mergedContext;
}
if (error != null) {
logEntry['error'] = error.toString();
}
if (stackTrace != null) {
logEntry['stackTrace'] = stackTrace.toString();
}
final jsonOutput = jsonEncode(logEntry);
if (kDebugMode) {
debugPrint(jsonOutput);
}
}