go-kit/log/logrus.go

79 lines
1.5 KiB
Go
Raw Normal View History

2021-03-29 08:35:42 +02:00
package log
import (
"fmt"
"io"
"github.com/sirupsen/logrus"
)
type LogrusLogger struct {
fields Fields
logger *logrus.Logger
}
func NewLogrusLogger(out io.Writer) Logger {
lr := &logrus.Logger{
Out: out,
Formatter: new(logrus.JSONFormatter),
Level: logrus.InfoLevel,
}
return &LogrusLogger{
fields: make(Fields),
logger: lr,
}
}
func (ll *LogrusLogger) SetLogLevel(loglevel LogLevel) {
switch LogLevel(loglevel) {
case LevelDebug:
ll.logger.SetLevel(logrus.DebugLevel)
case LevelInfo:
ll.logger.SetLevel(logrus.InfoLevel)
case LevelError:
ll.logger.SetLevel(logrus.ErrorLevel)
default:
ll.logger.SetLevel(logrus.InfoLevel)
}
}
func (ll *LogrusLogger) WithField(key string, value interface{}) Logger {
return ll.With(Fields{
key: value,
})
}
func (ll *LogrusLogger) WithErr(err error) Logger {
return ll.With(Fields{
"error": err,
})
}
func (ll *LogrusLogger) With(fields Fields) Logger {
newFields := make(Fields)
for k, v := range ll.fields {
newFields[k] = v
}
for k, v := range fields {
newFields[k] = v
}
return &LogrusLogger{
fields: newFields,
logger: ll.logger,
}
}
func (ll *LogrusLogger) Debug(message string) {
ll.logger.WithFields(logrus.Fields(ll.fields)).Debug(message)
}
func (ll *LogrusLogger) Info(message string) {
ll.logger.WithFields(logrus.Fields(ll.fields)).Info(message)
}
func (ll *LogrusLogger) Error(message string) {
ll.logger.WithFields(logrus.Fields(ll.fields)).Error(fmt.Errorf(message))
}