diff --git a/backend/internal/server/middleware/logger.go b/backend/internal/server/middleware/logger.go index 842efda9..27d4f51c 100644 --- a/backend/internal/server/middleware/logger.go +++ b/backend/internal/server/middleware/logger.go @@ -13,9 +13,17 @@ func Logger() gin.HandlerFunc { // 开始时间 startTime := time.Now() + // 请求路径 + path := c.Request.URL.Path + // 处理请求 c.Next() + // 跳过健康检查等高频探针路径的日志 + if path == "/health" || path == "/setup/status" { + return + } + // 结束时间 endTime := time.Now() @@ -25,9 +33,6 @@ func Logger() gin.HandlerFunc { // 请求方法 method := c.Request.Method - // 请求路径 - path := c.Request.URL.Path - // 状态码 statusCode := c.Writer.Status() diff --git a/backend/internal/service/dashboard_aggregation_service.go b/backend/internal/service/dashboard_aggregation_service.go index 10c68868..3400e5f5 100644 --- a/backend/internal/service/dashboard_aggregation_service.go +++ b/backend/internal/service/dashboard_aggregation_service.go @@ -4,6 +4,7 @@ import ( "context" "errors" "log" + "log/slog" "sync/atomic" "time" @@ -224,11 +225,11 @@ func (s *DashboardAggregationService) runScheduledAggregation() { if updateErr != nil { log.Printf("[DashboardAggregation] 更新水位失败: %v", updateErr) } - log.Printf("[DashboardAggregation] 聚合完成 (start=%s end=%s duration=%s watermark_updated=%t)", - start.Format(time.RFC3339), - now.Format(time.RFC3339), - time.Since(jobStart).String(), - updateErr == nil, + slog.Debug("[DashboardAggregation] 聚合完成", + "start", start.Format(time.RFC3339), + "end", now.Format(time.RFC3339), + "duration", time.Since(jobStart).String(), + "watermark_updated", updateErr == nil, ) s.maybeCleanupRetention(ctx, now) diff --git a/backend/internal/service/scheduler_snapshot_service.go b/backend/internal/service/scheduler_snapshot_service.go index 52d455b8..56e1463f 100644 --- a/backend/internal/service/scheduler_snapshot_service.go +++ b/backend/internal/service/scheduler_snapshot_service.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "log" + "log/slog" "strconv" "sync" "time" @@ -451,7 +452,7 @@ func (s *SchedulerSnapshotService) rebuildBucket(ctx context.Context, bucket Sch log.Printf("[Scheduler] rebuild cache failed: bucket=%s reason=%s err=%v", bucket.String(), reason, err) return err } - log.Printf("[Scheduler] rebuild ok: bucket=%s reason=%s size=%d", bucket.String(), reason, len(accounts)) + slog.Debug("[Scheduler] rebuild ok", "bucket", bucket.String(), "reason", reason, "size", len(accounts)) return nil } diff --git a/backend/internal/service/token_refresh_service.go b/backend/internal/service/token_refresh_service.go index ce7afc4a..03b13055 100644 --- a/backend/internal/service/token_refresh_service.go +++ b/backend/internal/service/token_refresh_service.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "log" + "log/slog" "strings" "sync" "time" @@ -164,9 +165,15 @@ func (s *TokenRefreshService) processRefresh() { } } - // 始终打印周期日志,便于跟踪服务运行状态 - log.Printf("[TokenRefresh] Cycle complete: total=%d, oauth=%d, needs_refresh=%d, refreshed=%d, failed=%d", - totalAccounts, oauthAccounts, needsRefresh, refreshed, failed) + // 无刷新活动时降级为 Debug,有实际刷新活动时保持 Info + if needsRefresh == 0 && failed == 0 { + slog.Debug("[TokenRefresh] Cycle complete", + "total", totalAccounts, "oauth", oauthAccounts, + "needs_refresh", needsRefresh, "refreshed", refreshed, "failed", failed) + } else { + log.Printf("[TokenRefresh] Cycle complete: total=%d, oauth=%d, needs_refresh=%d, refreshed=%d, failed=%d", + totalAccounts, oauthAccounts, needsRefresh, refreshed, failed) + } } // listActiveAccounts 获取所有active状态的账号 diff --git a/backend/internal/service/usage_cleanup_service.go b/backend/internal/service/usage_cleanup_service.go index 37f6d375..14a8412f 100644 --- a/backend/internal/service/usage_cleanup_service.go +++ b/backend/internal/service/usage_cleanup_service.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "log" + "log/slog" "net/http" "strings" "sync" @@ -174,7 +175,7 @@ func (s *UsageCleanupService) runOnce() { return } if task == nil { - log.Printf("[UsageCleanup] run_once done: no_task=true") + slog.Debug("[UsageCleanup] run_once done: no_task=true") return }