From 817aeaef90dc243aad194576c2abb9c2411c76e1 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 18 Aug 2019 22:25:42 +0200 Subject: [PATCH] Display containers/image logs --- internal/logging/logger.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/internal/logging/logger.go b/internal/logging/logger.go index bb4a6a74..ec82be03 100644 --- a/internal/logging/logger.go +++ b/internal/logging/logger.go @@ -1,6 +1,7 @@ package logging import ( + "fmt" "io" "os" "time" @@ -8,6 +9,7 @@ import ( "github.com/crazy-max/diun/internal/model" "github.com/rs/zerolog" "github.com/rs/zerolog/log" + "github.com/sirupsen/logrus" ) // Configure configures logger @@ -41,4 +43,31 @@ func Configure(fl *model.Flags, location *time.Location) { } else { zerolog.SetGlobalLevel(logLevel) } + + logrusLevel, err := logrus.ParseLevel(fl.LogLevel) + if err != nil { + log.Fatal().Err(err).Msgf("Unknown log level") + } else { + logrus.SetLevel(logrusLevel) + } + logrus.SetFormatter(new(LogrusFormatter)) +} + +// LogrusFormatter is a logrus formatter +type LogrusFormatter struct{} + +// Format renders a single log entry from logrus entry to zerolog +func (f *LogrusFormatter) Format(entry *logrus.Entry) ([]byte, error) { + message := fmt.Sprintf("[containers/image] %s", entry.Message) + switch entry.Level { + case logrus.ErrorLevel: + log.Error().Fields(entry.Data).Msg(message) + case logrus.WarnLevel: + log.Warn().Fields(entry.Data).Msg(message) + case logrus.DebugLevel: + log.Debug().Fields(entry.Data).Msg(message) + default: + log.Info().Fields(entry.Data).Msg(message) + } + return nil, nil }