gorm_logger.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package rest
  2. import (
  3. "context"
  4. "git.nspix.com/golang/micro/log"
  5. "gorm.io/gorm/logger"
  6. "gorm.io/gorm/utils"
  7. "time"
  8. )
  9. type Logger struct {
  10. LogLevel logger.LogLevel
  11. }
  12. func (lg *Logger) LogMode(level logger.LogLevel) logger.Interface {
  13. lg.LogLevel = level
  14. return lg
  15. }
  16. func (lg *Logger) Info(ctx context.Context, s string, i ...interface{}) {
  17. log.Infof(s, i...)
  18. }
  19. func (lg *Logger) Warn(ctx context.Context, s string, i ...interface{}) {
  20. log.Warnf(s, i...)
  21. }
  22. func (lg *Logger) Error(ctx context.Context, s string, i ...interface{}) {
  23. log.Errorf(s, i...)
  24. }
  25. func (lg *Logger) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error) {
  26. switch {
  27. case err != nil && lg.LogLevel >= logger.Error:
  28. sql, rows := fc()
  29. if rows == -1 {
  30. log.Errorf("SQL: execute %s error:%s in file %s", sql, err.Error(), utils.FileWithLineNum())
  31. } else {
  32. log.Errorf("SQL: execute %s error:%s in file %s", sql, err.Error(), utils.FileWithLineNum())
  33. }
  34. case lg.LogLevel == logger.Info:
  35. sql, rows := fc()
  36. if rows == -1 {
  37. log.Debugf("SQL: %s", sql)
  38. } else {
  39. log.Debugf("SQL: %s affect rows %d", sql, rows)
  40. }
  41. }
  42. }