还原glog.GetBacktrace文件打印开始位置

This commit is contained in:
john
2018-10-31 16:23:31 +08:00
parent 293cf81cf1
commit ee9362666e

View File

@ -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(`<autogenerated>`, cfile) {