fix: events
This commit is contained in:
60
templates/project/providers/event/logrus_adapter.go.tpl
Normal file
60
templates/project/providers/event/logrus_adapter.go.tpl
Normal file
@@ -0,0 +1,60 @@
|
||||
package event
|
||||
|
||||
import (
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// LogrusLoggerAdapter is a watermill logger adapter for logrus.
|
||||
type LogrusLoggerAdapter struct {
|
||||
log *logrus.Logger
|
||||
fields watermill.LogFields
|
||||
}
|
||||
|
||||
// NewLogrusLogger returns a LogrusLoggerAdapter that sends all logs to
|
||||
// the passed logrus instance.
|
||||
func LogrusAdapter() watermill.LoggerAdapter {
|
||||
return &LogrusLoggerAdapter{log: logrus.StandardLogger()}
|
||||
}
|
||||
|
||||
// Error logs on level error with err as field and optional fields.
|
||||
func (l *LogrusLoggerAdapter) Error(msg string, err error, fields watermill.LogFields) {
|
||||
l.createEntry(fields.Add(watermill.LogFields{"err": err})).Error(msg)
|
||||
}
|
||||
|
||||
// Info logs on level info with optional fields.
|
||||
func (l *LogrusLoggerAdapter) Info(msg string, fields watermill.LogFields) {
|
||||
l.createEntry(fields).Info(msg)
|
||||
}
|
||||
|
||||
// Debug logs on level debug with optional fields.
|
||||
func (l *LogrusLoggerAdapter) Debug(msg string, fields watermill.LogFields) {
|
||||
l.createEntry(fields).Debug(msg)
|
||||
}
|
||||
|
||||
// Trace logs on level trace with optional fields.
|
||||
func (l *LogrusLoggerAdapter) Trace(msg string, fields watermill.LogFields) {
|
||||
l.createEntry(fields).Trace(msg)
|
||||
}
|
||||
|
||||
// With returns a new LogrusLoggerAdapter that includes fields
|
||||
// to be re-used between logging statements.
|
||||
func (l *LogrusLoggerAdapter) With(fields watermill.LogFields) watermill.LoggerAdapter {
|
||||
return &LogrusLoggerAdapter{
|
||||
log: l.log,
|
||||
fields: l.fields.Add(fields),
|
||||
}
|
||||
}
|
||||
|
||||
// createEntry is a helper to add fields to a logrus entry if necessary.
|
||||
func (l *LogrusLoggerAdapter) createEntry(fields watermill.LogFields) *logrus.Entry {
|
||||
entry := logrus.NewEntry(l.log)
|
||||
|
||||
allFields := fields.Add(l.fields)
|
||||
|
||||
if len(allFields) > 0 {
|
||||
entry = entry.WithFields(logrus.Fields(allFields))
|
||||
}
|
||||
|
||||
return entry
|
||||
}
|
||||
Reference in New Issue
Block a user