package utils import ( "fmt" "os" "regexp" "runtime" "strconv" "strings" "time" ) var ( pid = os.Getpid() gormSourceDir string ) func init() { _, file, _, _ := runtime.Caller(0) gormSourceDir = regexp.MustCompile(`utils.utils\.go`).ReplaceAllString(file, "") } // NewTraceID 创建追踪ID func NewTraceID() string { return fmt.Sprintf("trace-id-%d-%s", pid, time.Now().Format("2006.01.02.15.04.05.999999")) } func FileWithLineNum() string { for i := 2; i < 15; i++ { _, file, line, ok := runtime.Caller(i) if ok && (!strings.HasPrefix(file, gormSourceDir) || strings.HasSuffix(file, "_test.go")) { return file + ":" + strconv.FormatInt(int64(line), 10) } } return "" }