package common 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/common.MethodName tmp := strings.Split(f.Name(), ".") if len(tmp) > 0 { fName = tmp[len(tmp)-1] } } } return fName } // CallerName returns the name of the function at the specified level // level == 0 means current method name func CallerName(level int) string { return callerInfo(2 + level) }