From ee9362666e85c38365afc89709956ec4d7339663 Mon Sep 17 00:00:00 2001 From: john Date: Wed, 31 Oct 2018 16:23:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=98=E5=8E=9Fglog.GetBacktrace=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=89=93=E5=8D=B0=E5=BC=80=E5=A7=8B=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/os/glog/glog_logger.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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) {