export function createStructuredLog()

in packages/app/src/logEntryProcessing.ts [175:204]


export function createStructuredLog(
	logGroup: string,
	logStream: string,
	logEvent: CloudWatchLogsLogEvent,
	extraFields: StructuredFields,
): PublishableStructuredLogData {
	const structuredLog = parseLambdaLogLine(logGroup, logEvent.message.trim());

	const timestamp: string = structuredLog.timestamp
		? (structuredLog.timestamp as string)
		: new Date(logEvent.timestamp).toISOString();

	const publishable: PublishableStructuredLogData = {
		...structuredLog,
		'@timestamp': timestamp,
		cloudwatchId: logEvent.id,
		cloudwatchLogGroup: logGroup,
		cloudwatchLogStream: logStream,
	};
	return Object.keys(extraFields).reduce(
		(acc: PublishableStructuredLogData, key) => {
			if (acc[key]) {
				acc[`overwrittenFields.${key}`] = acc[key];
			}
			acc[key] = extraFields[key];
			return acc;
		},
		publishable,
	);
}