Skip to content

feat(logs): capture request/response payloads and redesign log viewer#63

Merged
shuaijinchao merged 1 commit intomasterfrom
feat/logs-enhanced-display
Apr 18, 2026
Merged

feat(logs): capture request/response payloads and redesign log viewer#63
shuaijinchao merged 1 commit intomasterfrom
feat/logs-enhanced-display

Conversation

@shuaijinchao
Copy link
Copy Markdown
Collaborator

Backend:

  • Extend request_logs schema with method, path, request_headers, request_body, response_headers, response_body (SQLite + Postgres migrations via ensure_request_log_column / ALTER TABLE IF NOT EXISTS)
  • Capture ingress method/path/headers/body across universal, gemini and embeddings proxy entrypoints; aggregate final JSON for streaming responses and persist as response_body
  • Emit logs on all early-exit error paths (decode failure, no route, auth failure, upstream error, cache miss fallbacks) with full context
  • Cache-hit paths now include complete request/response bodies
  • Embeddings proxy: log every success/error branch and parse usage.prompt_tokens into input_tokens
  • Split API: query_logs list strips heavy fields (NULL bodies/headers); new get_log(id) endpoint fetches full payload on demand
  • Settings: DEFAULT_RETENTION_DAYS 30 -> 7, batch size 64 -> 32, cleanup interval 60s -> 600s; new log_record_payloads toggle (default true) to disable payload persistence

Frontend:

  • Compact 7-column log list (Time / Status / Model / Protocol / Latency / Token / Type), left-aligned, row click opens detail
  • New LogDetailDialog with meta header and four copy-enabled payload blocks (request headers/body, response headers/body) using lazy get_log fetch and pretty-printed JSON
  • Token display with IN/OUT labels and K/M formatting (<1000 raw, <1M 1-decimal K, >=1M 2-decimal M)
  • Type badge: green SSE / sky JSON replaces boolean stream column
  • Settings: split Log Configuration into its own half-width card next to Proxy Configuration; rename to "Retention Period" + "Record Payloads" with HelpCircle tooltips; tighten Config Backup layout

FIX #62

Backend:
- Extend request_logs schema with method, path, request_headers,
  request_body, response_headers, response_body (SQLite + Postgres
  migrations via ensure_request_log_column / ALTER TABLE IF NOT EXISTS)
- Capture ingress method/path/headers/body across universal, gemini and
  embeddings proxy entrypoints; aggregate final JSON for streaming
  responses and persist as response_body
- Emit logs on all early-exit error paths (decode failure, no route,
  auth failure, upstream error, cache miss fallbacks) with full context
- Cache-hit paths now include complete request/response bodies
- Embeddings proxy: log every success/error branch and parse
  usage.prompt_tokens into input_tokens
- Split API: query_logs list strips heavy fields (NULL bodies/headers);
  new get_log(id) endpoint fetches full payload on demand
- Settings: DEFAULT_RETENTION_DAYS 30 -> 7, batch size 64 -> 32,
  cleanup interval 60s -> 600s; new log_record_payloads toggle
  (default true) to disable payload persistence

Frontend:
- Compact 7-column log list (Time / Status / Model / Protocol /
  Latency / Token / Type), left-aligned, row click opens detail
- New LogDetailDialog with meta header and four copy-enabled payload
  blocks (request headers/body, response headers/body) using lazy
  get_log fetch and pretty-printed JSON
- Token display with IN/OUT labels and K/M formatting
  (<1000 raw, <1M 1-decimal K, >=1M 2-decimal M)
- Type badge: green SSE / sky JSON replaces boolean stream column
- Settings: split Log Configuration into its own half-width card next
  to Proxy Configuration; rename to "Retention Period" + "Record
  Payloads" with HelpCircle tooltips; tighten Config Backup layout
@shuaijinchao shuaijinchao merged commit a75188f into master Apr 18, 2026
2 checks passed
shuaijinchao added a commit that referenced this pull request Apr 18, 2026
- Bump workspace, Tauri and webui versions to 1.6.2.
- Document v1.6.2 changes in CHANGELOG.md and CHANGELOG_CN.md:
  - Features: request/response payload logging, redesigned log
    viewer, log_record_payloads toggle (#63).
  - Improvements: standalone provider config aliases
    (protocol/apikey) and protocol inference (#57), log retention
    defaults, split query_logs / get_log API (#63).
  - Fixes: release-server workflow pre-builds webui/dist so
    RustEmbed can find the assets (#56).
shuaijinchao added a commit that referenced this pull request Apr 18, 2026
- Bump workspace, Tauri and webui versions to 1.6.2.
- Document v1.6.2 changes in CHANGELOG.md and CHANGELOG_CN.md:
  - Features: request/response payload logging, redesigned log
    viewer, log_record_payloads toggle (#63).
  - Improvements: standalone provider config aliases
    (protocol/apikey) and protocol inference (#57), log retention
    defaults, split query_logs / get_log API (#63).
  - Fixes: release-server workflow pre-builds webui/dist so
    RustEmbed can find the assets (#56).
@shuaijinchao shuaijinchao deleted the feat/logs-enhanced-display branch April 19, 2026 03:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(logs): capture full request/response payloads and redesign log viewer

1 participant