프로젝트

일반

사용자정보

Actions

업무 #393

진행중
JL JL

Dev Console 로그 뷰어 구현 (실시간 SSE 스트리밍)

업무 #393: Dev Console 로그 뷰어 구현 (실시간 SSE 스트리밍)

James Lee이(가) 약 6시간 전에 추가함.

상태:
해결
우선순위:
보통
담당자:
목표버전:
시작일:
2026/04/20
완료일:
진척도:

0%

추정시간:

설명

개요

Admin Dev Console (port 9090) 에 서버 로그를 실시간으로 확인할 수 있는 Logs 탭을 추가한다.

구현 방식

  • tracing subscriber Layer: 서버의 모든 tracing 이벤트를 인메모리 링 버퍼에 수집
  • REST: GET /api/logs — 최근 N개 로그 반환
  • SSE: GET /api/logs/stream — 실시간 로그 스트리밍

변경 파일

  1. Cargo.toml — axum sse 피처, tokio-stream sync 피처 추가
  2. src/telemetry/mod.rs — LogEntry, LogStore(링 버퍼 + broadcast), LogLayer(tracing Layer 구현)
  3. src/server/mod.rs — AppState에 log_store 필드 추가
  4. src/main.rs — tracing subscriber에 LogLayer 연결
  5. src/admin/mod.rs — /api/logs, /api/logs/stream 엔드포인트 + Logs UI 탭

JL James Lee이(가) 6달 전에 변경 Actions #1

  • 상태을(를) 신규에서 해결(으)로 변경되었습니다.

구현 완료 — commit:server|5eec123

변경 파일

파일 내용
src/telemetry/mod.rs (신규) LogEntry, LogStore (링 버퍼 + broadcast), LogLayer (tracing Layer)
src/server/mod.rs AppState.log_store: Arc<LogStore> 필드 추가
src/main.rs tracing registry에 fmt + LogLayer 이중 레이어 연결, log_store AppState에 주입
Cargo.toml tokio-stream sync feature 추가 (BroadcastStream 사용)
src/admin/mod.rs 로그 엔드포인트 2개 + Logs 탭 UI

추가된 API

엔드포인트 동작
GET /api/logs?limit=200 최근 N개 로그 항목 반환 (JSON 배열)
GET /api/logs?after=<id> id 초과 항목만 반환 (커서 폴링)
GET /api/logs/stream SSE 실시간 스트림 (이벤트당 JSON 1개)

Dev Console Logs 탭 기능

  • Load 버튼: 최근 N개 항목 일괄 로드
  • Connect/Disconnect: SSE 실시간 스트리밍 토글 (초록 점 상태 표시)
  • Level 필터: ALL / ERROR / WARN / INFO / DEBUG / TRACE
  • Target 필터: 모듈 경로 substring 검색
  • Auto-scroll: 새 항목 추가 시 자동 스크롤
  • Clear: 로그 패널 초기화
  • 색상 코딩: ERROR=빨강, WARN=노랑, INFO=초록, DEBUG=파랑, TRACE=보라
Actions

내보내기 PDF Atom