56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
package db
|
||
|
||
import (
|
||
"apigo.cc/go/cast"
|
||
"apigo.cc/go/log"
|
||
)
|
||
|
||
type DBLog struct {
|
||
log.BaseLog
|
||
DbType string
|
||
Dsn string
|
||
Query string
|
||
QueryArgs string
|
||
UsedTime float32
|
||
Error string
|
||
CallStacks []string
|
||
}
|
||
|
||
func (dl *dbLogger) LogDB(query string, args []any, usedTime float32, err error, extra ...any) {
|
||
LogDB(dl.logger, dl.config, query, args, usedTime, err, extra...)
|
||
}
|
||
|
||
func LogDB(logger *log.Logger, conf *Config, query string, args []any, usedTime float32, err error, extra ...any) {
|
||
if logger == nil {
|
||
return
|
||
}
|
||
|
||
logType := log.LogTypeDb
|
||
level := log.INFO
|
||
var e string
|
||
if err != nil {
|
||
logType = log.LogTypeDbError
|
||
level = log.ERROR
|
||
e = err.Error()
|
||
}
|
||
|
||
if logger.CheckLevel(level) {
|
||
entry := log.GetEntry[DBLog]()
|
||
// 仅关注业务字段,LogType 手动赋值,基础字段由 logger.Log 自动填充
|
||
entry.LogType = logType
|
||
entry.DbType = conf.Type
|
||
entry.Dsn = conf.Dsn()
|
||
entry.Query = query
|
||
entry.QueryArgs = cast.To[string](args)
|
||
entry.UsedTime = usedTime
|
||
if e != "" {
|
||
entry.Error = e
|
||
entry.CallStacks = logger.GetCallStacks()
|
||
}
|
||
if len(extra) > 0 {
|
||
cast.FillMap(&entry.Extra, extra)
|
||
}
|
||
logger.Log(entry)
|
||
}
|
||
}
|