로그 비교: 여러 로그 파일을 타임스탬프로 정렬해 차이 분석
여러 로그 파일을 나란히 열고 타임스탬프에 맞춰 함께 스크롤하며 중요한 줄만 필터링하세요.
분산 시스템 디버깅을 위한 전체 화면 로그 뷰어입니다. 서로 다른 서비스의 로그를 넣으면 같은 시점에 어디서 무슨 일이 있었는지 볼 수 있습니다.
로그 비교: 여러 로그 파일을 타임스탬프로 정렬해 차이 분석
여러 로그 파일을 나란히 열고 타임스탬프에 맞춰 함께 스크롤하며 중요한 줄만 필터링하세요.
- 타임스탬프 정렬 스크롤: 열린 모든 로그가 같은 시점으로 함께 이동합니다.
- 여러 파일을 나란히 표시하여 클라이언트, 서버, 프록시 로그를 비교합니다.
- 파일별 키워드 및 정규식 필터로 노이즈를 관련 줄만 남기도록 줄입니다.
- 줄 강조와 고정 기능으로 타임라인을 분석하면서 증거를 표시합니다.
- 브라우저에서 로컬로 파싱하여 대용량 파일을 처리합니다. 업로드나 서버 용량 제한이 없습니다.
- 무료 오픈 소스(github.com/lubobill1990/log-compare).
타임스탬프에 맞춰 로그를 비교해야 하는 이유
하나의 요청이 세 서비스를 거치다가 문제가 생기면, 진실은 세 개의 로그 파일에 흩어져 있습니다. 하나씩 읽으면 타임스탬프를 머릿속에 기억한 채 편집기 사이를 오가야 하고, 매번 흐름을 놓치게 됩니다. Log Compare는 반대 방식을 취합니다. 관련 파일을 모두 한 번에 열면 뷰어가 공통 타임라인에 맞춰 정렬하므로, 한 로그를 스크롤하면 다른 로그도 같은 순간으로 이동합니다.
핵심 상호작용은 타임스탬프 잠금 스크롤입니다. 각 파일은 브라우저에서 파싱되고 모든 줄의 타임스탬프가 인덱싱됩니다. 기본 로그를 이동하면 다른 창은 그 시점 또는 그 이전의 가장 가까운 줄을 따라갑니다. 이는 엔지니어가 모니터 두 대와 많은 인내심으로 수동으로 하던 기법을 자동화한 것입니다. 머신 간 시계 오차는 숨겨지지 않고 그대로 보이며, 그 자체가 진단 정보입니다. 데이터베이스 로그가 원인이 된 요청보다 먼저 이벤트가 발생했다고 주장한다면 NTP 설정에 관한 중요한 사실을 알게 된 것입니다.
필터는 대규모에서도 정렬을 유용하게 만듭니다. 장황한 서비스는 초당 수천 줄을 출력할 수 있지만, 파일별 키워드 또는 정규식 필터로 각 창을 오류 코드, 요청 ID, 사용자 ID처럼 필요한 줄만 남길 수 있습니다. 정렬은 여전히 전체 타임라인을 기준으로 작동합니다. 모든 창에 요청 ID 필터를 결합하면 분산 추적을 처음부터 끝까지 읽을 수 있는 형태로 바꿀 수 있습니다.
모든 작업은 로컬에서 이루어집니다. 파일은 브라우저의 File API로 읽히며 컴퓨터를 떠나지 않습니다. 로그에 고객 데이터, 토큰 또는 임의의 온라인 도구에 붙여 넣어서는 안 되는 내부 호스트 이름이 들어 있을 때 중요합니다. 따라서 실제 크기 제한은 업로드 한도가 아니라 RAM입니다.
일반적인 용도는 다섯 서비스의 로그에서 혼란스러웠던 1분을 재구성하는 사후 분석, 장애 환경 로그와 정상 환경 로그를 비교하여 동작이 갈라지는 지점을 찾는 일, 클라이언트·게이트웨이·백엔드 전체에서 하나의 요청 ID를 추적하는 일, 그리고 수정이 오류 메시지뿐 아니라 이벤트 순서를 바꾸었는지 확인하는 일입니다. 뷰어는 오픈 소스이므로 사용자 지정 타임스탬프 형식에 맞게 파싱 규칙을 확장할 수 있습니다.
로그 비교 사용 예시
엔지니어가 실제로 타임스탬프 정렬 로그를 활용하는 방법입니다.
| 상황 | 로그 비교의 도움 방식 | 결과 |
|---|---|---|
| 게이트웨이와 백엔드 간 API 요청이 간헐적으로 실패 | 두 로그를 열고 요청 ID로 필터링한 뒤 게이트웨이 오류로 스크롤 | 백엔드 창은 이미 같은 시점에 있습니다. 40 ms 전의 연결 풀 시간 초과입니다. |
| 4개 서비스에 걸친 3분 장애의 사후 분석 | 네 로그를 모두 열고 장애 구간을 동기화해 단계별로 확인 | 서비스 전반의 이벤트 순서와 어떤 경보가 원인인지 결과인지가 분명해집니다. |
| 스테이징에서는 작동하지만 프로덕션에서는 실패 | 각 환경에서 같은 작업의 로그를 나란히 열기 | 프로덕션이 다른 코드 경로를 따르는 정확한 줄에서 창들이 갈라집니다. |
| 호스트 간 시계 오차 의심 | 알려진 공유 이벤트(배포 마커, cron 틱)에 맞춰 정렬 | 오차는 창 사이의 일정한 오프셋으로 나타납니다. 타임라인을 믿기 전에 수치화하세요. |
로그 비교 사용 방법
- 로그 비교 열기를 클릭하면 뷰어가 전체 화면 페이지로 열립니다.
- 두 개 이상의 로그 파일을 끌어다 놓거나 파일 선택기를 사용하세요. 각 파일은 자체 창에서 열립니다.
- 어느 창이든 스크롤하면 다른 창이 같은 타임스탬프로 자동 추적합니다.
- 각 창에 키워드 또는 정규식 필터를 추가해 노이즈를 줄이세요. 정렬은 전체 타임라인을 계속 추적합니다.
- 이벤트 순서를 재구성하면서 핵심 줄을 강조하거나 고정하세요.
로그 비교 FAQ
내 로그 파일이 어디론가 업로드되나요?
아니요. 파일은 브라우저의 File API로 열리고 JavaScript에서 로컬로 파싱됩니다. 아무것도 전송되지 않으므로 고객 데이터나 컴퓨터에 남아야 하는 비밀 정보가 포함된 로그에도 안전합니다.
어떤 타임스탬프 형식을 인식하나요?
일반적인 형식은 바로 작동합니다. ISO 8601(2026-09-11T02:30:00.123Z), syslog 스타일 날짜, 그리고 줄 시작 부분 근처에 있는 에포크 밀리초입니다. 인식 가능한 타임스탬프가 없는 줄은 이전 줄의 시간을 상속하므로 스택 추적이 로그 항목에 붙어 있습니다.
얼마나 큰 파일을 처리할 수 있나요?
파싱은 메모리에서 이루어지므로 실질적인 한계는 브라우저 RAM입니다. 데스크톱에서는 보통 수백 MB를 처리할 수 있습니다. 수 GB 로그는 먼저 grep으로 미리 필터링하거나 시간 구간별로 분할한 후 필요한 부분을 불러오세요.
시계가 다른 머신의 로그를 비교할 수 있나요?
예. 정렬은 각 파일의 자체 타임스탬프를 사용하므로 일정한 시계 오차는 조용히 보정되지 않고 창 사이에 보이는 오프셋으로 나타납니다. 알려진 공유 이벤트에 맞춰 오차를 측정하고 그 오프셋을 염두에 두고 타임라인을 읽으세요.
오픈 소스인가요?
예. Log Compare는 github.com/lubobill1990/log-compare에서 오픈 소스 라이선스로 개발됩니다. 새 타임스탬프 형식이나 기능을 위한 이슈와 풀 리퀘스트를 환영합니다.
왜 별도의 전체 화면 페이지로 열리나요?
로그 분석에는 가로 공간이 필요합니다. 긴 줄과 필터가 있는 여러 창을 표시해야 하기 때문입니다. 따라서 뷰어는 사이트의 일반 레이아웃 밖에서 실행되어 전체 창을 사용합니다. 세션 상태는 해당 탭에 유지되며 이 랜딩 페이지는 설명과 실행만 담당합니다.