package caller import ( "runtime" "strings" ) func callerInfo(i int) string { ptr, _, _, ok := runtime.Caller(i) fName := "unknown" if ok { f := runtime.FuncForPC(ptr) if f != nil { // f.Name() is like: github.com/docker/libnetwork/caller.MethodName tmp := strings.Split(f.Name(), ".") if len(tmp) > 0 { fName = tmp[len(tmp)-1] } } } return fName } // Name returns the name of the function at the specified level // level == 0 means current method name func Name(level int) string { return callerInfo(2 + level) }