buildEvent method
Formats log data for printing adapters.
This method processes the event context and creates formatted data that printing adapters can use. It performs JSON serialization of the raw message and handles special formatting for error events.
Performance optimization: Only processes events when print adapters are present in the upcoming adapters list.
Implementation
@override
void buildEvent(
PreEventContext context,
List<PVLogAdapter> upcomingAdapters,
) {
// skip if no print adapter in upcoming adapters by checking intents
bool hasPrintAdapter = upcomingAdapters.any(
(adapter) => adapter.intents.contains(AdapterIntent.print),
);
if (!hasPrintAdapter) {
return;
}
// Check if this is a catch error event
if (context.extra.containsKey('pvlogger_catch_error')) {
final errorData = context.extra['pvlogger_catch_error']!;
final error = errorData['error'];
final stackTrace = errorData['stackTrace'];
// Create formatted catch error data using jsonify
context.extra['pvlogger_catch_error_formatted'] = {
'error': jsonify(error),
'stackTrace': jsonify(stackTrace),
};
}
// Always call jsonify on raw and save as pvlogger_formatted
context.extra['pvlogger_formatted'] = {'formatted': jsonify(context.raw)};
}