diff --git a/g/os/glog/glog_logger.go b/g/os/glog/glog_logger.go index 83bd7b051..fce9a5a18 100644 --- a/g/os/glog/glog_logger.go +++ b/g/os/glog/glog_logger.go @@ -246,8 +246,19 @@ func (l *Logger) GetBacktrace(skip...int) string { } backtrace := "" index := 1 + from := 0 + // 首先定位业务文件开始位置 + for i := 0; i < 10; i++ { + if _, cfile, _, ok := runtime.Caller(i); ok { + if !gregex.IsMatchString("/g/os/glog/glog.+$", cfile) { + from = i + break + } + } + } + // 从业务文件开始位置根据自定义的skip开始backtrace goroot := runtime.GOROOT() - for i := customSkip + l.btSkip.Val(); i < 10000; i++ { + for i := from + customSkip + l.btSkip.Val(); i < 10000; i++ { if _, cfile, cline, ok := runtime.Caller(i); ok && cfile != "" { // 不打印出go源码路径及glog包文件路径,日志打印必须从业务源码文件开始,且从glog包文件开始检索 if (goroot == "" || !gregex.IsMatchString("^" + goroot, cfile)) && !gregex.IsMatchString(``, cfile) {