watchtower/pkg/logger/logger.go
Simon Aronsson 6b9fd8d7ef
fix some tests, split up and refactor
some wonky regression introduced by docker dependencies when running on darwin. see https://github.com/ory/dockertest/issues/212 for more info.
will have a look at this next
2020-12-06 12:59:12 +01:00

39 lines
No EOL
980 B
Go

package logger
import (
"context"
"github.com/sirupsen/logrus"
)
const ContextKey = "LogrusLoggerContext"
// GetLogger returns a logger from the context if one is available, otherwise a default logger
func GetLogger(ctx context.Context) *logrus.Logger {
if logger, ok := ctx.Value(ContextKey).(logrus.Logger); ok {
return &logger
} else {
return newLogger(&logrus.JSONFormatter{}, logrus.InfoLevel)
}
}
func AddLogger(ctx context.Context) {
setLogger(ctx, &logrus.JSONFormatter{}, logrus.InfoLevel)
}
func AddDebugLogger(ctx context.Context) {
setLogger(ctx, &logrus.TextFormatter{}, logrus.DebugLevel)
}
// SetLogger adds a logger to the supplied context
func setLogger(ctx context.Context, fmt logrus.Formatter, level logrus.Level) {
log := newLogger(fmt, level)
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
}