d068f5b331
* Problem: verbose logs display with FATAL option (fix #320) add my script increase amount for metamask add run amount ok hide log show info my logger hook log revive eth log tidy up use suplog log replace ok removed suplog tidy up tidy up fix compile remove sh tidy up tidy up * logger handler * fix * fix eth log override (#371) remove redundant log tidy up * log test * c++ Co-authored-by: jongwhan lee <jonghwan@crypto.com> Co-authored-by: Jongwhan Lee <51560997+leejw51crypto@users.noreply.github.com>
89 lines
1.8 KiB
Go
89 lines
1.8 KiB
Go
package log
|
|
|
|
import (
|
|
"github.com/rs/zerolog"
|
|
|
|
"github.com/cosmos/cosmos-sdk/server"
|
|
|
|
ethlog "github.com/ethereum/go-ethereum/log"
|
|
tmlog "github.com/tendermint/tendermint/libs/log"
|
|
)
|
|
|
|
var _ ethlog.Handler = &Handler{}
|
|
|
|
// Logger wraps the zero log Wrapper and extends it to support the ethereum logger interface.
|
|
type Handler struct {
|
|
*server.ZeroLogWrapper
|
|
}
|
|
|
|
func NewHandler(logger tmlog.Logger) ethlog.Handler {
|
|
zerologger, ok := logger.(*server.ZeroLogWrapper)
|
|
if !ok {
|
|
// default to Stdout if not an SDK logger wrapper
|
|
return ethlog.StdoutHandler
|
|
}
|
|
|
|
return &Handler{
|
|
ZeroLogWrapper: zerologger,
|
|
}
|
|
}
|
|
|
|
// Log implements the go-ethereum Logger Handler interface
|
|
func (h *Handler) Log(r *ethlog.Record) error {
|
|
lvl := EthLogLvlToZerolog(r.Lvl)
|
|
|
|
h.WithLevel(lvl).
|
|
Fields(getLogFields(r.Ctx...)).
|
|
Time(r.KeyNames.Time, r.Time).
|
|
Msg(r.Msg)
|
|
return nil
|
|
}
|
|
|
|
func EthLogLvlToZerolog(lvl ethlog.Lvl) zerolog.Level {
|
|
var level zerolog.Level
|
|
|
|
switch lvl {
|
|
case ethlog.LvlCrit:
|
|
level = zerolog.FatalLevel
|
|
case ethlog.LvlDebug:
|
|
level = zerolog.DebugLevel
|
|
case ethlog.LvlError:
|
|
level = zerolog.ErrorLevel
|
|
case ethlog.LvlInfo:
|
|
level = zerolog.InfoLevel
|
|
case ethlog.LvlTrace:
|
|
level = zerolog.TraceLevel
|
|
case ethlog.LvlWarn:
|
|
level = zerolog.WarnLevel
|
|
default:
|
|
level = zerolog.NoLevel
|
|
}
|
|
|
|
return level
|
|
}
|
|
|
|
func getLogFields(keyVals ...interface{}) map[string]interface{} {
|
|
if len(keyVals)%2 != 0 {
|
|
return nil
|
|
}
|
|
|
|
fields := make(map[string]interface{})
|
|
for i := 0; i < len(keyVals); i += 2 {
|
|
fields[keyVals[i].(string)] = keyVals[i+1]
|
|
}
|
|
|
|
return fields
|
|
}
|
|
|
|
// var ethermintLogger *tmlog.Logger = nil
|
|
|
|
// func NewHandler(logger tmlog.Logger) ethlog.Handler {
|
|
|
|
// ethermintLogger = &logger
|
|
|
|
// return ethlog.FuncHandler(func(r *ethlog.Record) error {
|
|
// (*ethermintLogger).Debug(fmt.Sprintf("[EVM] %v", r))
|
|
// return nil
|
|
// })
|
|
// }
|