extract common parts in logger and optimize code
This commit is contained in:
parent
ce610a9560
commit
bb8b43df61
@ -105,6 +105,21 @@ type logger struct {
|
||||
traceStr, traceErrStr, traceWarnStr string
|
||||
}
|
||||
|
||||
func (l *logger) printf(ctx context.Context, str, msg string, level LogLevel, data ...interface{}) {
|
||||
if l.LogLevel >= level {
|
||||
l.Printf(str+msg, append([]interface{}{utils.FileWithLineNum()}, data...)...)
|
||||
}
|
||||
}
|
||||
|
||||
func (l *logger) trace(ctx context.Context, fc func() (string, int64), ft string, used time.Duration, trace interface{}) {
|
||||
sql, rows := fc()
|
||||
if rows == -1 {
|
||||
l.Printf(ft, utils.FileWithLineNum(), trace, float64(used.Nanoseconds())/1e6, "-", sql)
|
||||
} else {
|
||||
l.Printf(ft, utils.FileWithLineNum(), trace, float64(used.Nanoseconds())/1e6, rows, sql)
|
||||
}
|
||||
}
|
||||
|
||||
// LogMode log mode
|
||||
func (l *logger) LogMode(level LogLevel) Interface {
|
||||
newlogger := *l
|
||||
@ -114,23 +129,17 @@ func (l *logger) LogMode(level LogLevel) Interface {
|
||||
|
||||
// Info print info
|
||||
func (l logger) Info(ctx context.Context, msg string, data ...interface{}) {
|
||||
if l.LogLevel >= Info {
|
||||
l.Printf(l.infoStr+msg, append([]interface{}{utils.FileWithLineNum()}, data...)...)
|
||||
}
|
||||
l.printf(ctx, l.infoStr, msg, Info, data...)
|
||||
}
|
||||
|
||||
// Warn print warn messages
|
||||
func (l logger) Warn(ctx context.Context, msg string, data ...interface{}) {
|
||||
if l.LogLevel >= Warn {
|
||||
l.Printf(l.warnStr+msg, append([]interface{}{utils.FileWithLineNum()}, data...)...)
|
||||
}
|
||||
l.printf(ctx, l.warnStr, msg, Warn, data...)
|
||||
}
|
||||
|
||||
// Error print error messages
|
||||
func (l logger) Error(ctx context.Context, msg string, data ...interface{}) {
|
||||
if l.LogLevel >= Error {
|
||||
l.Printf(l.errStr+msg, append([]interface{}{utils.FileWithLineNum()}, data...)...)
|
||||
}
|
||||
l.printf(ctx, l.errStr, msg, Error, data...)
|
||||
}
|
||||
|
||||
// Trace print sql message
|
||||
@ -138,28 +147,13 @@ func (l logger) Trace(ctx context.Context, begin time.Time, fc func() (string, i
|
||||
if l.LogLevel > Silent {
|
||||
elapsed := time.Since(begin)
|
||||
switch {
|
||||
case err != nil && l.LogLevel >= Error:
|
||||
sql, rows := fc()
|
||||
if rows == -1 {
|
||||
l.Printf(l.traceErrStr, utils.FileWithLineNum(), err, float64(elapsed.Nanoseconds())/1e6, "-", sql)
|
||||
} else {
|
||||
l.Printf(l.traceErrStr, utils.FileWithLineNum(), err, float64(elapsed.Nanoseconds())/1e6, rows, sql)
|
||||
}
|
||||
case elapsed > l.SlowThreshold && l.SlowThreshold != 0 && l.LogLevel >= Warn:
|
||||
sql, rows := fc()
|
||||
slowLog := fmt.Sprintf("SLOW SQL >= %v", l.SlowThreshold)
|
||||
if rows == -1 {
|
||||
l.Printf(l.traceWarnStr, utils.FileWithLineNum(), slowLog, float64(elapsed.Nanoseconds())/1e6, "-", sql)
|
||||
} else {
|
||||
l.Printf(l.traceWarnStr, utils.FileWithLineNum(), slowLog, float64(elapsed.Nanoseconds())/1e6, rows, sql)
|
||||
}
|
||||
case l.LogLevel == Info:
|
||||
sql, rows := fc()
|
||||
if rows == -1 {
|
||||
l.Printf(l.traceStr, utils.FileWithLineNum(), float64(elapsed.Nanoseconds())/1e6, "-", sql)
|
||||
} else {
|
||||
l.Printf(l.traceStr, utils.FileWithLineNum(), float64(elapsed.Nanoseconds())/1e6, rows, sql)
|
||||
}
|
||||
l.trace(ctx, fc, l.traceStr, elapsed, err)
|
||||
case err != nil && l.LogLevel >= Error:
|
||||
l.trace(ctx, fc, l.traceErrStr, elapsed, err)
|
||||
case elapsed > l.SlowThreshold && l.SlowThreshold != 0 && l.LogLevel >= Warn:
|
||||
slowLog := fmt.Sprintf("SLOW SQL >= %v", l.SlowThreshold)
|
||||
l.trace(ctx, fc, l.traceWarnStr, elapsed, slowLog)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user