logger.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package common_db
  2. import (
  3. "fmt"
  4. "time"
  5. "git.shuncheng.lu/bigthing/gocommon/pkg/internal/util"
  6. "git.shuncheng.lu/bigthing/gocommon/pkg/trace"
  7. "xorm.io/xorm/log"
  8. )
  9. /**
  10. copy ContextLogger
  11. */
  12. type DbLog struct {
  13. logger log.ContextLogger
  14. }
  15. func NewDbLog(logger *log.SimpleLogger) *DbLog {
  16. if logger == nil {
  17. return nil
  18. }
  19. return &DbLog{logger: log.NewLoggerAdapter(logger)}
  20. }
  21. // Debugf implements ContextLogger
  22. func (l *DbLog) Debugf(format string, v ...interface{}) {
  23. l.logger.Debugf(format, v...)
  24. }
  25. // Errorf implements ContextLogger
  26. func (l *DbLog) Errorf(format string, v ...interface{}) {
  27. l.logger.Errorf(format, v...)
  28. }
  29. // Infof implements ContextLogger
  30. func (l *DbLog) Infof(format string, v ...interface{}) {
  31. l.logger.Infof(format, v...)
  32. }
  33. // Warnf implements ContextLogger
  34. func (l *DbLog) Warnf(format string, v ...interface{}) {
  35. l.logger.Warnf(format, v...)
  36. }
  37. // Level implements ContextLogger
  38. func (l *DbLog) Level() log.LogLevel {
  39. return l.logger.Level()
  40. }
  41. // SetLevel implements ContextLogger
  42. func (l *DbLog) SetLevel(lv log.LogLevel) {
  43. l.logger.SetLevel(lv)
  44. }
  45. // ShowSQL implements ContextLogger
  46. func (l *DbLog) ShowSQL(show ...bool) {
  47. l.logger.ShowSQL(show...)
  48. }
  49. // IsShowSQL implements ContextLogger
  50. func (l *DbLog) IsShowSQL() bool {
  51. return l.logger.IsShowSQL()
  52. }
  53. // BeforeSQL implements ContextLogger
  54. func (m *DbLog) BeforeSQL(ctx log.LogContext) {
  55. m.logger.BeforeSQL(ctx)
  56. }
  57. // AfterSQL implements ContextLogger
  58. func (m *DbLog) AfterSQL(ctx log.LogContext) {
  59. m.logger.AfterSQL(ctx)
  60. if ctx.Err != nil {
  61. m.Errorf("Err: %v, SQL: %v, Args: %v, Time: %v", ctx.Err, ctx.SQL, ctx.Args, util.TimeToSeconds(ctx.ExecuteTime.Seconds()))
  62. }
  63. span := trace.GetMySqlExitSpan(ctx.Ctx)
  64. if span == nil {
  65. return
  66. }
  67. defer span.End()
  68. span.Log(time.Now(), "SQL", ctx.SQL, "Args", fmt.Sprintf("%+v", ctx.Args), "Time", util.TimeToSeconds(ctx.ExecuteTime.Seconds()))
  69. if ctx.Err != nil {
  70. span.Log(time.Now(), "ERROR", fmt.Sprintf("%v", ctx.Err))
  71. }
  72. }