feat(lyra)!: 添加结构化日志与请求追踪

- 配置 slog JSON 输出和日志级别
- 添加请求 ID、访问日志及上下文日志工具
- 拆分启动初始化并统一启动失败处理

BREAKING CHANGE: 配置文件必须提供 log.level,缺失或非法将导致启动失败
This commit is contained in:
2026-10-20 15:16:35 +08:00
parent 759bc3fc35
commit cd0e13325f
11 changed files with 197 additions and 33 deletions
+5 -5
View File
@@ -2,11 +2,11 @@ package handler
import (
"fmt"
"log/slog"
"lyra/internal/api"
"lyra/internal/cache"
"lyra/internal/httpx"
"lyra/internal/model"
"lyra/internal/util"
"net/http"
"time"
@@ -35,21 +35,21 @@ func (h *TestHandler) Hello() gin.HandlerFunc {
Value: categories,
TTL: 5 * time.Minute,
}); err != nil {
slog.ErrorContext(ctx.Request.Context(), "缓存分类列表失败")
util.Logger(ctx.Request.Context()).Error("设置缓存分类列表失败")
return
}
testResult, _, err := h.cache.Get[[]*model.Category](ctx.Request.Context(), "test:categories")
if err != nil {
slog.ErrorContext(ctx.Request.Context(), "获取缓存分类列表失败")
util.Logger(ctx.Request.Context()).Error("获取缓存分类列表失败")
}
if len(testResult) == 0 {
slog.ErrorContext(ctx.Request.Context(), "缓存分类列表为空")
util.Logger(ctx.Request.Context()).Error("缓存分类列表为空")
} else {
for _, v := range testResult {
fmt.Printf("%+v\n", v)
}
}
util.Logger(ctx.Request.Context()).Info("success")
httpx.OK(ctx, toCategoryResponses(categories))
}
}