package logger import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" "xorm.io/xorm/log" ) type XormZeroLogger struct { logger *zap.Logger off bool show bool } func NewXormZeroLogger(oLogger *zap.Logger) *XormZeroLogger { return &XormZeroLogger{ logger: oLogger.Named("Xorm"), off: false, show: true, } } func (l XormZeroLogger) BeforeSQL(_ log.LogContext) {} func (l XormZeroLogger) AfterSQL(c log.LogContext) { if c.Err == nil { l.logger.Info( "", zap.String("SQL", c.SQL), zap.Any("args", c.Args), zap.Duration("execution", c.ExecuteTime), ) return } l.logger.Error( c.Err.Error(), zap.Error(c.Err), zap.String("SQL", c.SQL), zap.Any("args", c.Args), zap.Duration("execution", c.ExecuteTime), ) } func (l XormZeroLogger) Debug(v ...interface{}) { l.logger.Sugar().Debug(v...) } func (l XormZeroLogger) Debugf(format string, v ...interface{}) { l.logger.Sugar().Debugf(format, v...) } func (l XormZeroLogger) Info(v ...interface{}) { l.logger.Sugar().Info(v...) } func (l XormZeroLogger) Infof(format string, v ...interface{}) { l.logger.Sugar().Infof(format, v...) } func (l XormZeroLogger) Warn(v ...interface{}) { l.logger.Sugar().Warn(v...) } func (l XormZeroLogger) Warnf(format string, v ...interface{}) { l.logger.Sugar().Warnf(format, v...) } func (l XormZeroLogger) Error(v ...interface{}) { l.logger.Sugar().Error(v...) } func (l XormZeroLogger) Errorf(format string, v ...interface{}) { l.logger.Sugar().Errorf(format, v...) } func (l XormZeroLogger) SetLevel(lvl log.LogLevel) { l.logger.Warn("Change log level is not supported.") } func (l *XormZeroLogger) ShowSQL(b ...bool) { l.show = b[0] } func (l XormZeroLogger) IsShowSQL() bool { return l.show } func (l XormZeroLogger) Level() log.LogLevel { if l.off { return log.LOG_OFF } for _, lvl := range []zapcore.Level{zapcore.DebugLevel, zapcore.InfoLevel, zapcore.WarnLevel, zapcore.ErrorLevel, zapcore.FatalLevel, zapcore.PanicLevel} { switch lvl { case zapcore.DebugLevel: return log.LOG_DEBUG case zapcore.InfoLevel: return log.LOG_INFO case zapcore.WarnLevel: return log.LOG_WARNING case zapcore.ErrorLevel: return log.LOG_ERR } } return log.LOG_UNKNOWN }