1// Copyright 2017 The Gitea Authors. All rights reserved. 2// Use of this source code is governed by a MIT-style 3// license that can be found in the LICENSE file. 4 5package db 6 7import ( 8 "fmt" 9 10 "code.gitea.io/gitea/modules/log" 11 12 xormlog "xorm.io/xorm/log" 13) 14 15// XORMLogBridge a logger bridge from Logger to xorm 16type XORMLogBridge struct { 17 showSQL bool 18 logger log.Logger 19} 20 21// NewXORMLogger inits a log bridge for xorm 22func NewXORMLogger(showSQL bool) xormlog.Logger { 23 return &XORMLogBridge{ 24 showSQL: showSQL, 25 logger: log.GetLogger("xorm"), 26 } 27} 28 29const stackLevel = 8 30 31// Log a message with defined skip and at logging level 32func (l *XORMLogBridge) Log(skip int, level log.Level, format string, v ...interface{}) error { 33 return l.logger.Log(skip+1, level, format, v...) 34} 35 36// Debug show debug log 37func (l *XORMLogBridge) Debug(v ...interface{}) { 38 _ = l.Log(stackLevel, log.DEBUG, fmt.Sprint(v...)) 39} 40 41// Debugf show debug log 42func (l *XORMLogBridge) Debugf(format string, v ...interface{}) { 43 _ = l.Log(stackLevel, log.DEBUG, format, v...) 44} 45 46// Error show error log 47func (l *XORMLogBridge) Error(v ...interface{}) { 48 _ = l.Log(stackLevel, log.ERROR, fmt.Sprint(v...)) 49} 50 51// Errorf show error log 52func (l *XORMLogBridge) Errorf(format string, v ...interface{}) { 53 _ = l.Log(stackLevel, log.ERROR, format, v...) 54} 55 56// Info show information level log 57func (l *XORMLogBridge) Info(v ...interface{}) { 58 _ = l.Log(stackLevel, log.INFO, fmt.Sprint(v...)) 59} 60 61// Infof show information level log 62func (l *XORMLogBridge) Infof(format string, v ...interface{}) { 63 _ = l.Log(stackLevel, log.INFO, format, v...) 64} 65 66// Warn show warning log 67func (l *XORMLogBridge) Warn(v ...interface{}) { 68 _ = l.Log(stackLevel, log.WARN, fmt.Sprint(v...)) 69} 70 71// Warnf show warnning log 72func (l *XORMLogBridge) Warnf(format string, v ...interface{}) { 73 _ = l.Log(stackLevel, log.WARN, format, v...) 74} 75 76// Level get logger level 77func (l *XORMLogBridge) Level() xormlog.LogLevel { 78 switch l.logger.GetLevel() { 79 case log.TRACE, log.DEBUG: 80 return xormlog.LOG_DEBUG 81 case log.INFO: 82 return xormlog.LOG_INFO 83 case log.WARN: 84 return xormlog.LOG_WARNING 85 case log.ERROR, log.CRITICAL: 86 return xormlog.LOG_ERR 87 } 88 return xormlog.LOG_OFF 89} 90 91// SetLevel set the logger level 92func (l *XORMLogBridge) SetLevel(lvl xormlog.LogLevel) { 93} 94 95// ShowSQL set if record SQL 96func (l *XORMLogBridge) ShowSQL(show ...bool) { 97 if len(show) > 0 { 98 l.showSQL = show[0] 99 } else { 100 l.showSQL = true 101 } 102} 103 104// IsShowSQL if record SQL 105func (l *XORMLogBridge) IsShowSQL() bool { 106 return l.showSQL 107} 108