feat: 实现日志追踪链路 #185

Merged
huanghaosheng merged 30 commits from feature/log-track into develop 2026-06-21 23:23:23 +08:00
Showing only changes of commit 9dce107a84 - Show all commits

View File

@@ -6,7 +6,7 @@ import (
"github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9"
"github.com/hhs/camtalk/internal/logger" "github.com/hhs/camtalk/internal/trace"
) )
// Redis key 前缀。 // Redis key 前缀。
@@ -83,7 +83,8 @@ func (r *CachedUserRepository) SaveRefreshToken(ctx context.Context, userID, tok
pipe.Set(ctx, key, userID, ttl) pipe.Set(ctx, key, userID, ttl)
pipe.SAdd(ctx, userRefreshKey(userID), tokenHash) pipe.SAdd(ctx, userRefreshKey(userID), tokenHash)
if _, err := pipe.Exec(ctx); err != nil { if _, err := pipe.Exec(ctx); err != nil {
logger.Log.Warnw("Redis cache write failed for refresh token", "error", err) log := trace.FromContext(ctx)
log.Warnw("redis cache write failed for refresh token", "error", err)
// 降级DB 已写入成功Redis 失败不影响正确性 // 降级DB 已写入成功Redis 失败不影响正确性
} }
return nil return nil
@@ -100,7 +101,8 @@ func (r *CachedUserRepository) FindRefreshToken(ctx context.Context, tokenHash s
} }
// redis.Nil 表示 key 不存在,其他错误记录日志后降级到 DB // redis.Nil 表示 key 不存在,其他错误记录日志后降级到 DB
if err != redis.Nil { if err != redis.Nil {
logger.Log.Warnw("Redis cache read failed for refresh token", "error", err) log := trace.FromContext(ctx)
log.Warnw("redis cache read failed for refresh token", "error", err)
} }
// 降级到 DB // 降级到 DB
@@ -139,7 +141,8 @@ func (r *CachedUserRepository) DeleteRefreshToken(ctx context.Context, tokenHash
pipe.SRem(ctx, userRefreshKey(userID), tokenHash) pipe.SRem(ctx, userRefreshKey(userID), tokenHash)
} }
if _, err := pipe.Exec(ctx); err != nil { if _, err := pipe.Exec(ctx); err != nil {
logger.Log.Warnw("Redis cache delete failed for refresh token", "error", err) log := trace.FromContext(ctx)
log.Warnw("redis cache delete failed for refresh token", "error", err)
} }
return nil return nil
} }
@@ -159,7 +162,8 @@ func (r *CachedUserRepository) DeleteUserRefreshTokens(ctx context.Context, user
} }
keys = append(keys, userKey) keys = append(keys, userKey)
if err := r.rdb.Del(ctx, keys...).Err(); err != nil { if err := r.rdb.Del(ctx, keys...).Err(); err != nil {
logger.Log.Warnw("Redis cache batch delete failed for user refresh tokens", "error", err, "userID", userID) log := trace.FromContext(ctx)
log.Warnw("redis cache batch delete failed for user refresh tokens", "error", err, "user_id", userID)
} }
} }