github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/logger/logrus.go (about) 1 package logger 2 3 import ( 4 "github.com/sirupsen/logrus" 5 "github.com/unicornultrafoundation/go-u2u/log" 6 ) 7 8 // LogrusHandler converts logrus hook to log handler. 9 func LogrusHandler(hook logrus.Hook) log.Handler { 10 return log.FuncHandler(func(r *log.Record) error { 11 data := &logrus.Entry{ 12 Message: r.Msg, 13 Data: fields(r.Ctx), 14 } 15 return hook.Fire(data) 16 }) 17 } 18 19 func fields(ctx []interface{}) logrus.Fields { 20 ff := make(logrus.Fields, len(ctx)/2) 21 for i := 1; i < len(ctx); i += 2 { 22 k, ok := ctx[i-1].(string) 23 if !ok { 24 continue 25 } 26 ff[k] = ctx[i] 27 } 28 29 return ff 30 }