electricity_bill_calc_service/logger/xormlogger.go
2022-09-08 16:10:08 +08:00

107 lines
2.2 KiB
Go

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
}