github.com/nais/knorten@v0.0.0-20240104110906-55926958e361/pkg/events/eventlogs.go (about) 1 package events 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/google/uuid" 8 "github.com/nais/knorten/pkg/database" 9 "github.com/nais/knorten/pkg/database/gensql" 10 "github.com/sirupsen/logrus" 11 ) 12 13 type EventLogger struct { 14 eventID uuid.UUID 15 log *logrus.Entry 16 repo database.Repository 17 context context.Context 18 } 19 20 func (e EventLogger) Info(messages ...any) { 21 for _, message := range messages { 22 messageAsString := fmt.Sprint(message) 23 24 e.log.Info(messageAsString) 25 err := e.repo.EventLogCreate(e.context, e.eventID, messageAsString, database.LogTypeInfo) 26 if err != nil { 27 e.log.WithError(err).Error("can't write event to database") 28 } 29 } 30 } 31 32 func (e EventLogger) Infof(template string, arg ...any) { 33 e.Info(fmt.Sprintf(template, arg...)) 34 } 35 36 // Error will not create event logs for users. 37 func (e EventLogger) Error(messages ...any) { 38 for _, message := range messages { 39 messageAsString := fmt.Sprint(message) 40 e.log.Error(messageAsString) 41 } 42 } 43 44 // Errorf will not create event logs for users. 45 func (e EventLogger) Errorf(template string, arg ...any) { 46 e.Error(fmt.Sprintf(template, arg...)) 47 } 48 49 func (e EventLogger) WithError(err error) *logrus.Entry { 50 return e.log.WithError(err) 51 } 52 53 func newEventLogger(ctx context.Context, log *logrus.Entry, repo database.Repository, event gensql.Event) EventLogger { 54 return EventLogger{ 55 eventID: event.ID, 56 log: log.WithField("eventType", event.Type).WithField("eventID", event.ID), 57 repo: repo, 58 context: ctx, 59 } 60 }