日志体系重构:利用 log 包自动堆栈捕获特性,简化类型化日志记录 (by AI)

This commit is contained in:
AI Engineer 2026-05-05 18:10:21 +08:00
parent bc3247dc4f
commit ae5011fba5
2 changed files with 51 additions and 32 deletions

View File

@ -1,6 +1,11 @@
# 变更记录 - @go/db
## [1.0.5] - 2026-05-05
## [1.0.6] - 2026-05-05
### 优化
- **日志体系重构**:
- 引入 `DBInfoLog``DBErrorLog` 类型化日志,分别继承 `log.InfoLog``log.ErrorLog`
- 利用 `log` 包的新特性实现“零手动”调用栈捕获,业务端仅需关注错误信息和 SQL 现场。
- 进一步解耦业务字段与日志元数据。
### 优化
- **日志自主化**:
- 将数据库日志逻辑从 `log` 包迁移至 `db` 包,实现日志格式与业务逻辑的深度绑定。

58
Log.go
View File

@ -6,14 +6,21 @@ import (
)
type DBLog struct {
log.BaseLog
DbType string
Dsn string
Query string
QueryArgs string
UsedTime float32
Error string
CallStacks []string
}
type DBInfoLog struct {
log.InfoLog
DBLog
}
type DBErrorLog struct {
log.ErrorLog
DBLog
}
func (dl *dbLogger) LogDB(query string, args []any, usedTime float32, err error, extra ...any) {
@ -25,27 +32,33 @@ func LogDB(logger *log.Logger, conf *Config, query string, args []any, usedTime
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(log.ERROR) {
entry := log.GetEntry[DBErrorLog]()
entry.LogType = log.LogTypeDbError
entry.Error = err.Error()
entry.DBLog = DBLog{
DbType: conf.Type,
Dsn: conf.Dsn(),
Query: query,
QueryArgs: cast.To[string](args),
UsedTime: usedTime,
}
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)
}
} else {
if logger.CheckLevel(log.INFO) {
entry := log.GetEntry[DBInfoLog]()
entry.LogType = log.LogTypeDb
entry.DBLog = DBLog{
DbType: conf.Type,
Dsn: conf.Dsn(),
Query: query,
QueryArgs: cast.To[string](args),
UsedTime: usedTime,
}
if len(extra) > 0 {
cast.FillMap(&entry.Extra, extra)
@ -53,3 +66,4 @@ func LogDB(logger *log.Logger, conf *Config, query string, args []any, usedTime
logger.Log(entry)
}
}
}