createStructuredLog function
String
createStructuredLog(
- Object message,
- LogSeverity severity, {
- Map<
String, Object?> ? payload, - String? traceparent,
- Zone? zone,
- StackTrace? stackTrace,
- String? projectId,
Formats a log entry for Google Cloud structured logging on stdout.
Conforms to Google Cloud's structured logging JSON schema.
If message is a Map, its entries are included at the top level of the
output JSON payload (excluding reserved fields like severity). Otherwise,
it is stored under the "message" key.
Implementation
String createStructuredLog(
Object message,
LogSeverity severity, {
Map<String, Object?>? payload,
String? traceparent,
Zone? zone,
StackTrace? stackTrace,
String? projectId,
}) {
final messageMap = switch (message) {
'' => <String, Object?>{},
Map() => _filterReservedMembers(message),
_ => {'message': message},
};
final result = <String, Object?>{
...messageMap,
...(payload ?? {}),
'severity': severity.value,
...(traceparent == null
? structuredTraceFromZone(projectId, zone)
: formatTraceparent(projectId, traceparent)),
if (stackTrace case final stackTrace?) ...{
'stack_trace': _formatStackTrace(stackTrace).toString(),
'logging.googleapis.com/sourceLocation': _sourceLocation(stackTrace),
},
};
return jsonEncode(sanitize(result));
}