Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. // Copyright 2017 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package db
  4. import (
  5. "fmt"
  6. "sync/atomic"
  7. "code.gitea.io/gitea/modules/log"
  8. xormlog "xorm.io/xorm/log"
  9. )
  10. // XORMLogBridge a logger bridge from Logger to xorm
  11. type XORMLogBridge struct {
  12. showSQL atomic.Bool
  13. logger log.Logger
  14. }
  15. // NewXORMLogger inits a log bridge for xorm
  16. func NewXORMLogger(showSQL bool) xormlog.Logger {
  17. l := &XORMLogBridge{logger: log.GetLogger("xorm")}
  18. l.showSQL.Store(showSQL)
  19. return l
  20. }
  21. const stackLevel = 8
  22. // Log a message with defined skip and at logging level
  23. func (l *XORMLogBridge) Log(skip int, level log.Level, format string, v ...any) {
  24. l.logger.Log(skip+1, level, format, v...)
  25. }
  26. // Debug show debug log
  27. func (l *XORMLogBridge) Debug(v ...any) {
  28. l.Log(stackLevel, log.DEBUG, "%s", fmt.Sprint(v...))
  29. }
  30. // Debugf show debug log
  31. func (l *XORMLogBridge) Debugf(format string, v ...any) {
  32. l.Log(stackLevel, log.DEBUG, format, v...)
  33. }
  34. // Error show error log
  35. func (l *XORMLogBridge) Error(v ...any) {
  36. l.Log(stackLevel, log.ERROR, "%s", fmt.Sprint(v...))
  37. }
  38. // Errorf show error log
  39. func (l *XORMLogBridge) Errorf(format string, v ...any) {
  40. l.Log(stackLevel, log.ERROR, format, v...)
  41. }
  42. // Info show information level log
  43. func (l *XORMLogBridge) Info(v ...any) {
  44. l.Log(stackLevel, log.INFO, "%s", fmt.Sprint(v...))
  45. }
  46. // Infof show information level log
  47. func (l *XORMLogBridge) Infof(format string, v ...any) {
  48. l.Log(stackLevel, log.INFO, format, v...)
  49. }
  50. // Warn show warning log
  51. func (l *XORMLogBridge) Warn(v ...any) {
  52. l.Log(stackLevel, log.WARN, "%s", fmt.Sprint(v...))
  53. }
  54. // Warnf show warnning log
  55. func (l *XORMLogBridge) Warnf(format string, v ...any) {
  56. l.Log(stackLevel, log.WARN, format, v...)
  57. }
  58. // Level get logger level
  59. func (l *XORMLogBridge) Level() xormlog.LogLevel {
  60. switch l.logger.GetLevel() {
  61. case log.TRACE, log.DEBUG:
  62. return xormlog.LOG_DEBUG
  63. case log.INFO:
  64. return xormlog.LOG_INFO
  65. case log.WARN:
  66. return xormlog.LOG_WARNING
  67. case log.ERROR:
  68. return xormlog.LOG_ERR
  69. case log.NONE:
  70. return xormlog.LOG_OFF
  71. }
  72. return xormlog.LOG_UNKNOWN
  73. }
  74. // SetLevel set the logger level
  75. func (l *XORMLogBridge) SetLevel(lvl xormlog.LogLevel) {
  76. }
  77. // ShowSQL set if record SQL
  78. func (l *XORMLogBridge) ShowSQL(show ...bool) {
  79. if len(show) == 0 {
  80. show = []bool{true}
  81. }
  82. l.showSQL.Store(show[0])
  83. }
  84. // IsShowSQL if record SQL
  85. func (l *XORMLogBridge) IsShowSQL() bool {
  86. return l.showSQL.Load()
  87. }