util.go 714 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package utils
  2. import (
  3. "fmt"
  4. "os"
  5. "regexp"
  6. "runtime"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. var (
  12. pid = os.Getpid()
  13. gormSourceDir string
  14. )
  15. func init() {
  16. _, file, _, _ := runtime.Caller(0)
  17. gormSourceDir = regexp.MustCompile(`utils.utils\.go`).ReplaceAllString(file, "")
  18. }
  19. // NewTraceID 创建追踪ID
  20. func NewTraceID() string {
  21. return fmt.Sprintf("trace-id-%d-%s",
  22. pid,
  23. time.Now().Format("2006.01.02.15.04.05.999999"))
  24. }
  25. func FileWithLineNum() string {
  26. for i := 2; i < 15; i++ {
  27. _, file, line, ok := runtime.Caller(i)
  28. if ok && (!strings.HasPrefix(file, gormSourceDir) || strings.HasSuffix(file, "_test.go")) {
  29. return file + ":" + strconv.FormatInt(int64(line), 10)
  30. }
  31. }
  32. return ""
  33. }