/
logger.go
63 lines (54 loc) · 1.51 KB
/
logger.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package orm
import (
"context"
"github.com/dll02/webgo/framework/contract"
"gorm.io/gorm/logger"
"time"
)
// OrmLogger orm的日志实现类, 实现了gorm.Logger.Interface
type OrmLogger struct {
logger contract.Log // 有一个logger对象存放webgo的log服务
}
// NewOrmLogger 初始化一个ormLogger,
func NewOrmLogger(logger contract.Log) *OrmLogger {
return &OrmLogger{logger: logger}
}
// LogMode 什么都不实现,日志级别完全依赖webgo的日志定义
func (o *OrmLogger) LogMode(level logger.LogLevel) logger.Interface {
return o
}
// Info 对接webgo的info输出
func (o *OrmLogger) Info(ctx context.Context, s string, i ...interface{}) {
fields := map[string]interface{}{
"fields": i,
}
o.logger.Info(ctx, s, fields)
}
// Warn 对接webgo的Warn输出
func (o *OrmLogger) Warn(ctx context.Context, s string, i ...interface{}) {
fields := map[string]interface{}{
"fields": i,
}
o.logger.Warn(ctx, s, fields)
}
// Error 对接webgo的Error输出
func (o *OrmLogger) Error(ctx context.Context, s string, i ...interface{}) {
fields := map[string]interface{}{
"fields": i,
}
o.logger.Error(ctx, s, fields)
}
// Trace 对接webgo的Trace输出
func (o *OrmLogger) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error) {
sql, rows := fc()
elapsed := time.Since(begin)
fields := map[string]interface{}{
"begin": begin,
"error": err,
"sql": sql,
"rows": rows,
"time": elapsed,
}
s := "orm trace sql"
o.logger.Trace(ctx, s, fields)
}