From 64560465ee5035d434cde416270ab68cdd4dc0d5 Mon Sep 17 00:00:00 2001 From: Zaba505 Date: Fri, 15 Dec 2023 23:19:27 -0500 Subject: [PATCH 1/2] feat(issue-25): add helper package for standardizing sqs log messages --- queue/sqs/sqsslog/sqsslog.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 queue/sqs/sqsslog/sqsslog.go diff --git a/queue/sqs/sqsslog/sqsslog.go b/queue/sqs/sqsslog/sqsslog.go new file mode 100644 index 0000000..a0ab4af --- /dev/null +++ b/queue/sqs/sqsslog/sqsslog.go @@ -0,0 +1,27 @@ +// Copyright (c) 2023 Z5Labs and Contributors +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +package sqsslog + +import "log/slog" + +// MessageId +func MessageId(s string) slog.Attr { + return slog.String("sqs_message_id", s) +} + +// ReceiptHandle +func ReceiptHandle(s string) slog.Attr { + return slog.String("sqs_receipt_handle", s) +} + +// MessageAttributes +func MessageAttributes(m map[string]string) slog.Attr { + attrs := make([]any, len(m)) + for key, val := range m { + attrs = append(attrs, slog.String(key, val)) + } + return slog.Group("sqs_message_attributes", attrs...) +} From ea79eb27305a371d5bbc8c1e6e56b1c9f5af7811 Mon Sep 17 00:00:00 2001 From: Zaba505 Date: Fri, 15 Dec 2023 23:21:50 -0500 Subject: [PATCH 2/2] refactor(issue-25): use helper package to ensure consistent log field names --- queue/sqs/sqs.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/queue/sqs/sqs.go b/queue/sqs/sqs.go index 2b1ae47..757023e 100644 --- a/queue/sqs/sqs.go +++ b/queue/sqs/sqs.go @@ -14,6 +14,7 @@ import ( "github.com/z5labs/bedrock/pkg/otelslog" "github.com/z5labs/bedrock/pkg/slogfield" "github.com/z5labs/bedrock/queue" + "github.com/z5labs/bedrock/queue/sqs/sqsslog" "github.com/aws/aws-sdk-go-v2/service/sqs" "github.com/aws/aws-sdk-go-v2/service/sqs/types" @@ -242,7 +243,7 @@ func (p *BatchDeleteProcessor) Process(ctx context.Context, msgs []types.Message p.log.ErrorContext( spanCtx, "failed to delete message", - slogfield.String("sqs_message_id", *entry.Id), + sqsslog.MessageId(deref(entry.Id)), slogfield.String("sqs_error_code", *entry.Code), slogfield.String("sqs_error_message", *entry.Message), slogfield.Bool("sqs_sender_fault", entry.SenderFault), @@ -251,3 +252,11 @@ func (p *BatchDeleteProcessor) Process(ctx context.Context, msgs []types.Message } return nil } + +func deref[T any](t *T) T { + var zero T + if t == nil { + return zero + } + return *t +}