diff --git a/src/dynamo-streams.ts b/src/dynamo-streams.ts index 5809dc7..7b47ea3 100644 --- a/src/dynamo-streams.ts +++ b/src/dynamo-streams.ts @@ -34,6 +34,9 @@ export type DynamoStreamHandlerConfig = { * Create a "context" for the lambda execution. (e.g. "data sources") */ createRunContext: (base: BaseContext) => Context | Promise; + + useMinimalLogging?: boolean; + /** * The maximum concurrency for processing records. * @@ -227,7 +230,9 @@ export class DynamoStreamHandler { }; context.logger.info( - { event: this.obfuscateEvent(event) }, + this.config.useMinimalLogging + ? { eventIds: event.Records.map((r) => r.eventID) } + : { event: this.obfuscateEvent(event) }, 'Processing DynamoDB stream event', ); @@ -260,9 +265,11 @@ export class DynamoStreamHandler { concurrency: this.config.concurrency ?? 5, }, async (record) => { - const recordLogger = this.config.logger.child({ - record: this.obfuscateRecord(record), - }); + const recordLogger = this.config.logger.child( + this.config.useMinimalLogging + ? { recordEventId: record.eventID } + : { record: this.obfuscateRecord(record) }, + ); if (!record.dynamodb) { recordLogger.error( 'The dynamodb property was not present on event', diff --git a/src/kinesis.ts b/src/kinesis.ts index 648166d..fa9d1d8 100644 --- a/src/kinesis.ts +++ b/src/kinesis.ts @@ -20,6 +20,8 @@ export type KinesisEventHandlerConfig = { * Create a "context" for the lambda execution. (e.g. "data sources") */ createRunContext: (base: BaseContext) => Context | Promise; + + useMinimalLogging?: boolean; /** * The maximum concurrency for processing events. * @@ -90,6 +92,12 @@ export class KinesisEventHandler { Object.assign(context, await this.config.createRunContext(context)); // 2. Process all the records. + context.logger.info( + this.config.useMinimalLogging + ? { eventIds: event.Records.map((r) => r.eventID) } + : { event }, + 'Processing Kinesis event', + ); const processingResult = await processWithOrdering( { items: event.Records, diff --git a/src/sqs.ts b/src/sqs.ts index 57fbeeb..2cae718 100644 --- a/src/sqs.ts +++ b/src/sqs.ts @@ -20,6 +20,9 @@ export type SQSMessageHandlerConfig = { * Create a "context" for the lambda execution. (e.g. "data sources") */ createRunContext: (base: BaseContext) => Context | Promise; + + useMinimalLogging?: boolean; + /** * The maximum concurrency for processing messages. * @@ -107,7 +110,12 @@ export class SQSMessageHandler { Object.assign(context, await this.config.createRunContext(context)); // 2. Process all the records. - context.logger.info({ event }, 'Processing SQS topic message'); + context.logger.info( + this.config.useMinimalLogging + ? { messageIds: event.Records.map((r) => r.messageId) } + : { event }, + 'Processing SQS message', + ); const processingResult = await processWithOrdering( { @@ -151,12 +159,20 @@ export class SQSMessageHandler { .map(([groupId, record]) => { const [failedRecord, ...subsequentUnprocessedRecords] = record.items; context.logger.error( - { - groupId, - err: record.error, - failedRecord, - subsequentUnprocessedRecords, - }, + this.config.useMinimalLogging + ? { + groupId, + err: record.error, + failedRecordMessageId: failedRecord.messageId, + subsequentUnprocessedRecordsMessageIds: + subsequentUnprocessedRecords.map((r) => r.messageId), + } + : { + groupId, + err: record.error, + failedRecord, + subsequentUnprocessedRecords, + }, 'Failed to fully process message group', );