업무 #393
진행중
JL
JL
Dev Console 로그 뷰어 구현 (실시간 SSE 스트리밍)
James Lee이(가) 약 7시간 전에 추가함.
설명
Admin Dev Console (port 9090) 에 서버 로그를 실시간으로 확인할 수 있는 Logs 탭을 추가한다.
구현 방식¶
-
tracing subscriber Layer: 서버의 모든 tracing 이벤트를 인메모리 링 버퍼에 수집
-
REST:
GET /api/logs — 최근 N개 로그 반환
-
SSE:
GET /api/logs/stream — 실시간 로그 스트리밍
변경 파일¶
-
Cargo.toml — axum sse 피처, tokio-stream sync 피처 추가
-
src/telemetry/mod.rs — LogEntry, LogStore(링 버퍼 + broadcast), LogLayer(tracing Layer 구현)
-
src/server/mod.rs — AppState에 log_store 필드 추가
-
src/main.rs — tracing subscriber에 LogLayer 연결
-
src/admin/mod.rs — /api/logs, /api/logs/stream 엔드포인트 + Logs UI 탭
- 상태을(를) 신규에서 해결(으)로 변경되었습니다.
구현 완료 — 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=보라
내보내기 PDF
Atom