Move logrus wrapper to ocis-pkg

To make it more widely usable
This commit is contained in:
Ralf Haferkamp
2022-02-25 08:58:38 +01:00
parent f612ca788e
commit a3aad659f8
2 changed files with 3 additions and 4 deletions
-74
View File
@@ -1,74 +0,0 @@
package logging
import (
"io/ioutil"
"github.com/rs/zerolog"
"github.com/sirupsen/logrus"
)
type levelMap map[logrus.Level]zerolog.Level
var levelMapping = levelMap{
logrus.PanicLevel: zerolog.PanicLevel,
logrus.ErrorLevel: zerolog.ErrorLevel,
logrus.TraceLevel: zerolog.TraceLevel,
logrus.DebugLevel: zerolog.DebugLevel,
logrus.WarnLevel: zerolog.WarnLevel,
logrus.InfoLevel: zerolog.InfoLevel,
}
// LogrusWrapper around zerolog. Required because idp uses logrus internally.
type LogrusWrapper struct {
zeroLog *zerolog.Logger
levelMap levelMap
}
// Wrap return a logrus logger which internally logs to /dev/null. Messages are passed to the
// underlying zerolog via hooks.
func Wrap(zr zerolog.Logger) *logrus.Logger {
lr := logrus.New()
lr.SetOutput(ioutil.Discard)
lr.SetLevel(logrusLevel(zr.GetLevel()))
lr.AddHook(&LogrusWrapper{
zeroLog: &zr,
levelMap: levelMapping,
})
return lr
}
// Levels on which logrus hooks should be triggered
func (h *LogrusWrapper) Levels() []logrus.Level {
return logrus.AllLevels
}
// Fire called by logrus on new message
func (h *LogrusWrapper) Fire(entry *logrus.Entry) error {
h.zeroLog.WithLevel(h.levelMap[entry.Level]).
Fields(zeroLogFields(entry.Data)).
Msg(entry.Message)
return nil
}
//Convert logrus fields to zerolog
func zeroLogFields(fields logrus.Fields) map[string]interface{} {
fm := make(map[string]interface{})
for k, v := range fields {
fm[k] = v
}
return fm
}
// Convert logrus level to zerolog
func logrusLevel(level zerolog.Level) logrus.Level {
for lrLvl, zrLvl := range levelMapping {
if zrLvl == level {
return lrLvl
}
}
panic("Unexpected loglevel")
}
+1 -2
View File
@@ -21,7 +21,6 @@ import (
"github.com/libregraph/lico/server"
"github.com/owncloud/ocis/idp/pkg/assets"
"github.com/owncloud/ocis/idp/pkg/config"
"github.com/owncloud/ocis/idp/pkg/logging"
"github.com/owncloud/ocis/idp/pkg/middleware"
"github.com/owncloud/ocis/ocis-pkg/log"
"stash.kopano.io/kgol/rndm"
@@ -59,7 +58,7 @@ func NewService(opts ...Option) Service {
idpSettings := bootstrap.Settings(options.Config.IDP)
bs, err := bootstrap.Boot(ctx, &idpSettings, &licoconfig.Config{
Logger: logging.Wrap(logger),
Logger: log.LogrusWrap(logger),
})
if err != nil {