Actions
업무 #393
진행중
JL
JL
Dev Console 로그 뷰어 구현 (실시간 SSE 스트리밍)
업무 #393:
Dev Console 로그 뷰어 구현 (실시간 SSE 스트리밍)
설명
개요¶
Admin Dev Console (port 9090) 에 서버 로그를 실시간으로 확인할 수 있는 Logs 탭을 추가한다.
구현 방식¶
- tracing subscriber Layer: 서버의 모든 tracing 이벤트를 인메모리 링 버퍼에 수집
-
REST:
GET /api/logs— 최근 N개 로그 반환 -
SSE:
GET /api/logs/stream— 실시간 로그 스트리밍
변경 파일¶
-
Cargo.toml— axumsse피처, tokio-streamsync피처 추가 -
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 탭
JL James Lee이(가) 6달 전에 변경
- 상태을(를) 신규에서 해결(으)로 변경되었습니다.
구현 완료 — 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