在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
package logrus_hook import ( "runtime" "strings" "path/filepath" log "github.com/Sirupsen/logrus" ) type ContextHook struct { } func (hook ContextHook)Levels() []log.Level { return log.AllLevels } func (hook ContextHook)Fire(entry *log.Entry) error { pc := make([]uintptr, 10) //表示自身栈中跳过6个栈帧数 并且把栈中剩余信息写入pc中。
//0表示Callers自身的调用栈,1表示Callers所在的调用栈 runtime.Callers(6, pc) // frames := runtime.CallersFrames(pc) frame, _ := frames.Next() funcName := frame.Func.Name() funcName = funcName[strings.LastIndexByte(funcName, filepath.Separator) + 1 :] fileName := frame.File[strings.LastIndexByte(frame.File, filepath.Separator) + 1:] entry.Data["file"] = fileName entry.Data["func"] = funcName entry.Data["line"] = frame.Line //for { // frame, more := frames.Next() // println(frame.File) // println(frame.Func.Name()) // println(frame.Line) // println("") // // if !more{ // break // } //} return nil } func init() { log.AddHook(ContextHook{})
} |
请发表评论