diff --git a/entry.go b/entry.go index 5c971f6..1bf127c 100644 --- a/entry.go +++ b/entry.go @@ -185,7 +185,7 @@ func getCaller() *runtime.Frame { callerInitOnce.Do(func() { pcs := make([]uintptr, 2) _ = runtime.Callers(0, pcs) - logrusPackage = getPackageName(runtime.FuncForPC(pcs[1]).Name()) + logrusPackage = getPackageName(funcName(pcs)) // now that we have the cache, we can skip a minimum count of known-logrus functions // XXX this is dubious, the number of frames may vary diff --git a/versions_go1_14.go b/versions_go1_14.go new file mode 100644 index 0000000..8db3360 --- /dev/null +++ b/versions_go1_14.go @@ -0,0 +1,10 @@ +// +build go1.14 + +package logrus + +import "runtime" + +// funcName returns the function name that logrus calls +func funcName(pcs []uintptr) string { + return runtime.FuncForPC(pcs[0]).Name() +} diff --git a/versions_others.go b/versions_others.go new file mode 100644 index 0000000..8b3a682 --- /dev/null +++ b/versions_others.go @@ -0,0 +1,10 @@ +// +build !go1.14 + +package logrus + +import "runtime" + +// funcName returns the function name that logrus calls +func funcName(pcs []uintptr) string { + return runtime.FuncForPC(pcs[1]).Name() +}