init from gitlab
This commit is contained in:
70
internal/server/db/logger.go
Normal file
70
internal/server/db/logger.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
var durationUnits = map[time.Duration]string{
|
||||
time.Nanosecond: "elapsed_ns",
|
||||
time.Microsecond: "elapsed_us",
|
||||
time.Millisecond: "elapsed_ms",
|
||||
time.Second: "elapsed",
|
||||
time.Minute: "elapsed_min",
|
||||
time.Hour: "elapsed_hr",
|
||||
}
|
||||
|
||||
type Logger struct{}
|
||||
|
||||
func (l Logger) LogMode(logger.LogLevel) logger.Interface {
|
||||
return l
|
||||
}
|
||||
|
||||
func (l Logger) Error(ctx context.Context, msg string, opts ...interface{}) {
|
||||
zerolog.Ctx(ctx).Error().Msg(fmt.Sprintf(msg, opts...))
|
||||
}
|
||||
|
||||
func (l Logger) Warn(ctx context.Context, msg string, opts ...interface{}) {
|
||||
zerolog.Ctx(ctx).Warn().Msg(fmt.Sprintf(msg, opts...))
|
||||
}
|
||||
|
||||
func (l Logger) Info(ctx context.Context, msg string, opts ...interface{}) {
|
||||
zerolog.Ctx(ctx).Info().Msg(fmt.Sprintf(msg, opts...))
|
||||
}
|
||||
|
||||
func (l Logger) Trace(ctx context.Context, begin time.Time, f func() (string, int64), err error) {
|
||||
zl := zerolog.Ctx(ctx)
|
||||
var event *zerolog.Event
|
||||
|
||||
if err != nil {
|
||||
event = zl.Debug()
|
||||
} else {
|
||||
event = zl.Trace()
|
||||
}
|
||||
|
||||
durationKey, found := durationUnits[zerolog.DurationFieldUnit]
|
||||
if !found {
|
||||
zl.Error().
|
||||
Dur("zerolog.DurationFieldUnit", zerolog.DurationFieldUnit).
|
||||
Msg("unknown value for zerolog.DurationFieldUnit")
|
||||
durationKey = "elapsed_"
|
||||
}
|
||||
|
||||
event.Dur(durationKey, time.Since(begin))
|
||||
|
||||
sql, rows := f()
|
||||
if sql != "" {
|
||||
event.Str("sql", sql)
|
||||
}
|
||||
if rows > -1 {
|
||||
event.Int64("rows", rows)
|
||||
}
|
||||
|
||||
event.Send()
|
||||
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user