Skip to content

Commit

Permalink
feat: add default logger with slog
Browse files Browse the repository at this point in the history
  • Loading branch information
inaciogu committed Jan 23, 2024
1 parent 0c15089 commit 1672a13
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 4 deletions.
25 changes: 25 additions & 0 deletions consumer/logger/logger.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package logger

import (
"fmt"
"log/slog"
"os"
)

type DefaultLogger struct {
*slog.Logger
}

func New() *DefaultLogger {
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))

slog.SetDefault(logger)

return &DefaultLogger{
Logger: logger,
}
}

func (l *DefaultLogger) Log(message string, v ...interface{}) {
l.Info(fmt.Sprintf(message, v...))
}
16 changes: 16 additions & 0 deletions consumer/logger/logger_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package logger_test

import (
"github.com/inaciogu/go-sqs/consumer/logger"
"github.com/stretchr/testify/suite"
)

type UnitTestSuite struct {
suite.Suite
}

func (ut *UnitTestSuite) TestNew() {
logger := logger.New()

ut.NotNil(logger)
}
17 changes: 13 additions & 4 deletions consumer/sqsclient.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package sqsclient

import (
"fmt"
"strings"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/sqs"
"github.com/inaciogu/go-sqs/consumer/logger"
"github.com/inaciogu/go-sqs/consumer/message"
)

Expand All @@ -19,6 +19,10 @@ type SQSService interface {
ListQueues(input *sqs.ListQueuesInput) (*sqs.ListQueuesOutput, error)
}

type Logger interface {
Log(message string, v ...interface{})
}

type SQSClientInterface interface {
GetQueueUrl() *string
ReceiveMessages(queueUrl string, ch chan *sqs.Message) error
Expand All @@ -45,6 +49,7 @@ type SQSClientOptions struct {
type SQSClient struct {
Client SQSService
ClientOptions *SQSClientOptions
Logger Logger
}

const (
Expand Down Expand Up @@ -72,9 +77,11 @@ func New(sqsService SQSService, options SQSClientOptions) *SQSClient {

setDefaultOptions(&options)

logger := logger.New()
return &SQSClient{
Client: sqsService,
ClientOptions: &options,
Logger: logger,
}
}

Expand Down Expand Up @@ -130,8 +137,10 @@ func (s *SQSClient) ReceiveMessages(queueUrl string, ch chan *sqs.Message) error

queueName := splittedUrl[len(splittedUrl)-1]

s.Logger.Log("polling messages from queue %s", queueName)

for {
fmt.Printf("polling messages from queue %s\n", queueName)
s.Logger.Log("polling messages from queue %s\n", queueName)

result, err := s.Client.ReceiveMessage(&sqs.ReceiveMessageInput{
QueueUrl: aws.String(queueUrl),
Expand Down Expand Up @@ -167,7 +176,7 @@ func (s *SQSClient) ProcessMessage(sqsMessage *sqs.Message, queueUrl string) {
panic(err)
}

fmt.Printf("failed to handle message with ID: %s\n", message.Metadata.MessageId)
s.Logger.Log("failed to handle message with ID: %s\n", message.Metadata.MessageId)

return
}
Expand All @@ -181,7 +190,7 @@ func (s *SQSClient) ProcessMessage(sqsMessage *sqs.Message, queueUrl string) {
panic(err)
}

fmt.Printf("message handled ID: %s\n", message.Metadata.MessageId)
s.Logger.Log("message handled ID: %s\n", message.Metadata.MessageId)
}

// Poll starts polling messages from the queue
Expand Down

0 comments on commit 1672a13

Please sign in to comment.