forked from free-lancers/electricity_bill_calc_service
feat(log):完全使用Zerolog接管项目中的日志记录。
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"io"
|
||||
"os"
|
||||
|
||||
jsoniter "github.com/json-iterator/go"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/samber/lo"
|
||||
)
|
||||
@@ -20,6 +21,10 @@ func init() {
|
||||
logger.Info().Msg("Logger initialized.")
|
||||
}
|
||||
|
||||
func GetLogger() *zerolog.Logger {
|
||||
return logger
|
||||
}
|
||||
|
||||
func Panic() *zerolog.Event {
|
||||
return logger.Panic()
|
||||
}
|
||||
@@ -59,3 +64,12 @@ func Printf(format string, v ...interface{}) {
|
||||
func With() zerolog.Context {
|
||||
return logger.With()
|
||||
}
|
||||
|
||||
func FormatAny(v interface{}) string {
|
||||
b, err := jsoniter.MarshalToString(v)
|
||||
if err != nil {
|
||||
logger.Error().Str("process", "log").Err(err).Stack().Msg("Value marshal failed.")
|
||||
return ""
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
97
logger/xormlogger.go
Normal file
97
logger/xormlogger.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/samber/lo"
|
||||
"xorm.io/xorm/log"
|
||||
)
|
||||
|
||||
type XormZeroLogger struct {
|
||||
logger *zerolog.Logger
|
||||
off bool
|
||||
show bool
|
||||
}
|
||||
|
||||
func NewXormZeroLogger(oLogger *zerolog.Logger) *XormZeroLogger {
|
||||
return &XormZeroLogger{
|
||||
logger: lo.ToPtr(oLogger.With().Str("process", "Xorm").Logger()),
|
||||
off: false,
|
||||
show: true,
|
||||
}
|
||||
}
|
||||
|
||||
func (l XormZeroLogger) BeforeSQL(_ log.LogContext) {}
|
||||
|
||||
func (l XormZeroLogger) AfterSQL(c log.LogContext) {
|
||||
if c.Err == nil {
|
||||
l.logger.Info().Str("SQL", c.SQL).Str("args", FormatAny(c.Args)).Dur("execution", c.ExecuteTime).Send()
|
||||
return
|
||||
}
|
||||
l.logger.Error().Err(c.Err).Stack().Str("SQL", c.SQL).Str("args", FormatAny(c.Args)).Dur("execution", c.ExecuteTime).Msg(c.Err.Error())
|
||||
}
|
||||
|
||||
func (l XormZeroLogger) Debug(v ...interface{}) {
|
||||
l.logger.Debug().Str("args", FormatAny(v)).Msg(fmt.Sprint(v...))
|
||||
}
|
||||
|
||||
func (l XormZeroLogger) Debugf(format string, v ...interface{}) {
|
||||
l.logger.Debug().Str("args", FormatAny(v)).Msg(fmt.Sprintf(format, v...))
|
||||
}
|
||||
|
||||
func (l XormZeroLogger) Info(v ...interface{}) {
|
||||
l.logger.Info().Str("args", FormatAny(v)).Msg(fmt.Sprint(v...))
|
||||
}
|
||||
|
||||
func (l XormZeroLogger) Infof(format string, v ...interface{}) {
|
||||
l.logger.Info().Str("args", FormatAny(v)).Msg(fmt.Sprintf(format, v...))
|
||||
}
|
||||
|
||||
func (l XormZeroLogger) Warn(v ...interface{}) {
|
||||
l.logger.Warn().Str("args", FormatAny(v)).Msg(fmt.Sprint(v...))
|
||||
}
|
||||
|
||||
func (l XormZeroLogger) Warnf(format string, v ...interface{}) {
|
||||
l.logger.Warn().Str("args", FormatAny(v)).Msg(fmt.Sprintf(format, v...))
|
||||
}
|
||||
|
||||
func (l XormZeroLogger) Error(v ...interface{}) {
|
||||
l.logger.Error().Str("args", FormatAny(v)).Msg(fmt.Sprint(v...))
|
||||
}
|
||||
|
||||
func (l XormZeroLogger) Errorf(format string, v ...interface{}) {
|
||||
l.logger.Error().Str("args", FormatAny(v)).Msg(fmt.Sprintf(format, v...))
|
||||
}
|
||||
|
||||
func (l XormZeroLogger) SetLevel(lvl log.LogLevel) {
|
||||
l.logger.Warn().Msg("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 []zerolog.Level{zerolog.DebugLevel, zerolog.InfoLevel, zerolog.WarnLevel, zerolog.ErrorLevel, zerolog.FatalLevel, zerolog.PanicLevel} {
|
||||
switch lvl {
|
||||
case zerolog.DebugLevel:
|
||||
return log.LOG_DEBUG
|
||||
case zerolog.InfoLevel:
|
||||
return log.LOG_INFO
|
||||
case zerolog.WarnLevel:
|
||||
return log.LOG_WARNING
|
||||
case zerolog.ErrorLevel:
|
||||
return log.LOG_ERR
|
||||
}
|
||||
}
|
||||
return log.LOG_UNKNOWN
|
||||
}
|
Reference in New Issue
Block a user