diff --git a/pkg/common/log/file_line_hk.go b/pkg/common/log/file_line_hk.go index babc4791f..bc908ee03 100644 --- a/pkg/common/log/file_line_hk.go +++ b/pkg/common/log/file_line_hk.go @@ -7,7 +7,7 @@ package log import ( - "Open_IM/pkg/utils" + "fmt" "github.com/sirupsen/logrus" "runtime" "strings" @@ -23,49 +23,49 @@ func (f *fileHook) Levels() []logrus.Level { return logrus.AllLevels } -//func (f *fileHook) Fire(entry *logrus.Entry) error { -// entry.Data["FilePath"] = findCaller(6) -// return nil -//} - func (f *fileHook) Fire(entry *logrus.Entry) error { - var s string - _, b, c, _ := runtime.Caller(10) - i := strings.SplitAfter(b, "/") - if len(i) > 3 { - s = i[len(i)-3] + i[len(i)-2] + i[len(i)-1] + ":" + utils.IntToString(c) - } - entry.Data["FilePath"] = s + entry.Data["FilePath"] = findCaller(6) return nil } -//func findCaller(skip int) string { -// file := "" -// line := 0 -// for i := 0; i < 10; i++ { -// file, line = getCaller(skip + i) -// if !strings.HasPrefix(file, "log") { -// break -// } +//func (f *fileHook) Fire(entry *logrus.Entry) error { +// var s string +// _, b, c, _ := runtime.Caller(10) +// i := strings.SplitAfter(b, "/") +// if len(i) > 3 { +// s = i[len(i)-3] + i[len(i)-2] + i[len(i)-1] + ":" + utils.IntToString(c) // } -// return fmt.Sprintf("%s:%d", file, line) -//} -// -//func getCaller(skip int) (string, int) { -// _, file, line, ok := runtime.Caller(skip) -// if !ok { -// return "", 0 -// } -// -// n := 0 -// for i := len(file) - 1; i > 0; i-- { -// if file[i] == '/' { -// n++ -// if n >= 2 { -// file = file[i+1:] -// break -// } -// } -// } -// return file, line +// entry.Data["FilePath"] = s +// return nil //} + +func findCaller(skip int) string { + file := "" + line := 0 + for i := 0; i < 10; i++ { + file, line = getCaller(skip + i) + if !strings.HasPrefix(file, "log") { + break + } + } + return fmt.Sprintf("%s:%d", file, line) +} + +func getCaller(skip int) (string, int) { + _, file, line, ok := runtime.Caller(skip) + if !ok { + return "", 0 + } + + n := 0 + for i := len(file) - 1; i > 0; i-- { + if file[i] == '/' { + n++ + if n >= 2 { + file = file[i+1:] + break + } + } + } + return file, line +}