package service import ( "encoding/json" "fmt" "log" "os" "path/filepath" "time" ) const smokeAIDebugLogDir = "/www/wwwroot/code/wx_service/runtime_logs" func smokeAIDebugLogPath(now time.Time) string { day := now.In(time.Local).Format("2006-01-02") return filepath.Join(smokeAIDebugLogDir, fmt.Sprintf("smoke_ai_%s.log", day)) } func appendSmokeAIDebugLog(scene string, payload map[string]interface{}) { if payload == nil { payload = map[string]interface{}{} } now := time.Now().In(time.Local) payload["scene"] = scene payload["ts"] = now.Format(time.RFC3339) body, err := json.MarshalIndent(payload, "", " ") if err != nil { log.Printf("[smoke_ai_debug] marshal failed scene=%s err=%v", scene, err) return } if err := os.MkdirAll(smokeAIDebugLogDir, 0o755); err != nil { log.Printf("[smoke_ai_debug] mkdir failed scene=%s err=%v", scene, err) return } f, err := os.OpenFile(smokeAIDebugLogPath(now), os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o644) if err != nil { log.Printf("[smoke_ai_debug] open failed scene=%s err=%v", scene, err) return } defer f.Close() if _, err := f.Write(append(body, '\n', '\n')); err != nil { log.Printf("[smoke_ai_debug] write failed scene=%s err=%v", scene, err) } }