Refactoring
1. Move all pre-defined messages to constants in a separate file 2. Remove pkg/errors dependency
This commit is contained in:
@@ -1,13 +0,0 @@
|
||||
package jsonlog
|
||||
|
||||
import "github.com/sirupsen/logrus"
|
||||
|
||||
type Level logrus.Level
|
||||
|
||||
const (
|
||||
FatalLevel = Level(logrus.FatalLevel)
|
||||
ErrorLevel = Level(logrus.ErrorLevel)
|
||||
WarnLevel = Level(logrus.WarnLevel)
|
||||
InfoLevel = Level(logrus.InfoLevel)
|
||||
DebugLevel = Level(logrus.DebugLevel)
|
||||
)
|
||||
@@ -1,55 +0,0 @@
|
||||
package jsonlog
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
const appNameKey = "app_name"
|
||||
|
||||
var fieldMap = logrus.FieldMap{
|
||||
logrus.FieldKeyTime: "@timestamp",
|
||||
logrus.FieldKeyMsg: "message",
|
||||
}
|
||||
|
||||
type Logger interface {
|
||||
WithField(key string, value interface{}) Logger
|
||||
|
||||
Info(...interface{})
|
||||
Error(error, ...interface{})
|
||||
FatalError(error, ...interface{})
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
AppName string
|
||||
Level Level
|
||||
}
|
||||
|
||||
func NewLogger(config *Config) Logger {
|
||||
impl := logrus.New()
|
||||
impl.SetFormatter(&logrus.JSONFormatter{
|
||||
TimestampFormat: time.RFC3339Nano,
|
||||
FieldMap: fieldMap,
|
||||
})
|
||||
impl.SetLevel(logrus.Level(config.Level))
|
||||
return &logger{
|
||||
FieldLogger: impl.WithField(appNameKey, config.AppName),
|
||||
}
|
||||
}
|
||||
|
||||
type logger struct {
|
||||
logrus.FieldLogger
|
||||
}
|
||||
|
||||
func (l *logger) WithField(key string, value interface{}) Logger {
|
||||
return &logger{l.FieldLogger.WithField(key, value)}
|
||||
}
|
||||
|
||||
func (l *logger) Error(err error, args ...interface{}) {
|
||||
l.FieldLogger.WithError(err).Error(args)
|
||||
}
|
||||
|
||||
func (l *logger) FatalError(err error, args ...interface{}) {
|
||||
l.FieldLogger.WithError(err).Fatal(args...)
|
||||
}
|
||||
Reference in New Issue
Block a user