watchtower/pkg/logger/logger.go

43 lines
1.2 KiB
Go
Raw Normal View History

package logger
import (
"context"
"github.com/sirupsen/logrus"
)
2020-11-15 23:48:43 +01:00
type contextKeyType string
const contextKey = contextKeyType("LogrusLoggerContext")
// GetLogger returns a logger from the context if one is available, otherwise a default logger
func GetLogger(ctx context.Context) *logrus.Logger {
2020-11-15 23:48:43 +01:00
if logger, ok := ctx.Value(contextKey).(logrus.Logger); ok {
return &logger
}
2020-11-15 23:48:43 +01:00
return newLogger(&logrus.JSONFormatter{}, logrus.InfoLevel)
}
2020-11-15 23:48:43 +01:00
// AddLogger adds a logger to the passed context
func AddLogger(ctx context.Context) context.Context {
return setLogger(ctx, &logrus.JSONFormatter{}, logrus.InfoLevel)
}
2020-11-15 23:48:43 +01:00
// AddDebugLogger adds a text-formatted debug logger to the passed context
func AddDebugLogger(ctx context.Context) context.Context {
return setLogger(ctx, &logrus.TextFormatter{}, logrus.DebugLevel)
}
// SetLogger adds a logger to the supplied context
2020-11-15 23:48:43 +01:00
func setLogger(ctx context.Context, fmt logrus.Formatter, level logrus.Level) context.Context {
log := newLogger(fmt, level)
2020-11-15 23:48:43 +01:00
return context.WithValue(ctx, contextKey, log)
}
func newLogger(fmt logrus.Formatter, level logrus.Level) *logrus.Logger {
log := logrus.New()
log.SetFormatter(fmt)
log.SetLevel(level)
return log
2020-11-15 23:48:43 +01:00
}