1234567891011121314151617181920212223242526272829 |
- 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)
- }
|