50 lines
926 B
Go
50 lines
926 B
Go
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 {
|
|
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) 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...)
|
|
}
|