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  }