This commit is contained in:
2025-11-05 23:52:48 +08:00
parent a1f7c09b2a
commit 5eeeeb5006
6 changed files with 51 additions and 18 deletions

View File

@@ -91,13 +91,13 @@ func GetLogger(ctx context.Context) *Logger {
return defaultLogger
}
chain, ok := val.([]string)
if !ok || len(chain) == 0 {
chain := GetTraceStr(ctx)
if chain == "" {
return defaultLogger
}
// 使用 With 方法创建带有 traceKey 字段的 Logger 副本
newSugaredLogger := defaultLogger.With(traceKey, strings.Join(chain, "->"))
newSugaredLogger := defaultLogger.With(traceKey, chain)
return &Logger{newSugaredLogger}
}
@@ -211,8 +211,11 @@ func (g *GormLogger) Trace(ctx context.Context, begin time.Time, fc func() (sql
"elapsed", fmt.Sprintf("%.3fms", float64(elapsed.Nanoseconds())/1e6),
}
// 获取带有调用链的 logger
logger := GetLogger(ctx)
// 附加调用链信息
chain := GetTraceStr(ctx)
if chain != "" {
fields = append(fields, traceKey, chain)
}
if err != nil {
// 如果是 "record not found" 错误且我们配置了跳过,则直接返回
@@ -220,18 +223,18 @@ func (g *GormLogger) Trace(ctx context.Context, begin time.Time, fc func() (sql
return
}
// 否则,记录为错误日志
logger.With(fields...).Errorf("[GORM] error: %s", err)
defaultLogger.With(fields...).Errorf("[GORM] error: %s", err)
return
}
// 如果查询时间超过慢查询阈值,则记录警告
if g.SlowThreshold != 0 && elapsed > g.SlowThreshold {
logger.With(fields...).Warnf("[GORM] slow query")
defaultLogger.With(fields...).Warnf("[GORM] slow query")
return
}
// 正常情况,记录 Debug 级别的 SQL 查询
logger.With(fields...).Debugf("[GORM] trace")
defaultLogger.With(fields...).Debugf("[GORM] trace")
// --- 逻辑修复结束 ---
}