79 lines
1.5 KiB
Go
79 lines
1.5 KiB
Go
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))
|
|
}
|