✨ feat(status): 新增请求日志并重设计状态页
- 新增 server.request_log 配置:记录业务请求元数据(IP/方法/路径/状态/耗时, key 自动脱敏)与 4xx/5xx 错误摘要(前 4KB),按保留天数自动清理 - 移除 /self-info 与 /vacuum 接口及相关文档 - 状态页重设计:毛玻璃卡片+吸顶玻璃栏、服务状态条、KPI 卡与请求分类 条形图、可折叠 API 文档分组、行内测试面板;深浅色分别调校, 含 reduced-motion / reduced-transparency / 无 backdrop-filter 兜底
This commit is contained in:
1 parent
bf49805bb6
commit
bfb4290c15
11 files changed
+1060
-838
No files matched your search
+8
-4
@@ -56,6 +56,12 @@ func main() {
|
||||
fqapi.StartCacheCleanup()
|
||||
defer fqapi.StopCacheCleanup() // 程序退出时停止清理任务
|
||||
|
||||
// 启动请求日志(server.request_log.enabled 开启时生效)
|
||||
if err := fqapi.InitRequestLog(); err != nil {
|
||||
logger.Warning("请求日志初始化失败: " + err.Error())
|
||||
}
|
||||
defer fqapi.CloseRequestLog() // 程序退出时落盘剩余日志
|
||||
|
||||
// 初始化算法切换器
|
||||
initAlgorithm()
|
||||
|
||||
@@ -139,14 +145,12 @@ func initDeviceKeyPool() error {
|
||||
func setupRoutes() {
|
||||
http.HandleFunc("/", handlers.HandleMain)
|
||||
http.HandleFunc("/status", handlers.RequireAccessKey(handlers.HandleStatus))
|
||||
http.HandleFunc("/self-info", handlers.RequireAccessKey(handlers.HandleSelfInfo))
|
||||
http.HandleFunc("/vacuum", handlers.RequireAccessKey(handlers.HandleVacuum))
|
||||
|
||||
http.HandleFunc("/healthz", handlers.HandleHealth)
|
||||
|
||||
// API端点:限流 + protect_all 鉴权链(代理路由不鉴权,URL 由服务端生成不含 key)
|
||||
// API端点:请求日志 + 限流 + protect_all 鉴权链(代理路由不鉴权,URL 由服务端生成不含 key)
|
||||
wrap := func(h http.HandlerFunc) http.HandlerFunc {
|
||||
return handlers.RateLimit(handlers.OptionalAccessKey(h))
|
||||
return handlers.LogRequestMiddleware(handlers.RateLimit(handlers.OptionalAccessKey(h)))
|
||||
}
|
||||
http.HandleFunc("/search", wrap(handlers.HandleSearch))
|
||||
http.HandleFunc("/detail", wrap(handlers.HandleDetail))
|
||||
|
||||
Reference in new issue
Block a user