로그 분석기
원시 로그(JSON, logfmt, 웹 액세스, syslog, 일반 텍스트)를 붙여 넣으면 패턴을 쓰지 않고도 타임스탬프, 레벨, 예외, 주요 필드를 얻습니다.
시간 범위
2026-10-20T13:55:36.123Z INFO [gateway] 요청 수신 path=/api/orders user_id=4821
{"@timestamp":"2026-10-20T13:55:37.004Z","level":"error","service":"payment","message":"결제 실패","order_id":"A-1042","user_id":4821}
127.0.0.1 - alice [20/Oct/2026:13:55:38 +0000] "POST /api/orders HTTP/1.1" 502 187 "-" "curl/8.5.0"
2026-10-20 13:55:40,512 ERROR [order-service] 주문 전송 중 처리되지 않은 예외
java.lang.IllegalStateException: 게이트웨이 시간 초과
at com.acme.Order.submit(Order.java:42)
Caused by: java.net.SocketTimeoutException: 읽기 시간 초과
at com.acme.Gateway.call(Gateway.java:77)
2026-10-20T13:55:41.900Z WARN [gateway] 재시도 예약 attempt=2 order_id=A-1042사용 방법
- 로그 일부를 붙여 넣거나 로컬 .log / .txt 파일을 여세요. 실행 버튼 없이 즉시 해석이 시작되고, 각 줄을 JSON, logfmt, 웹 액세스, syslog, 타임스탬프·레벨로 시작하는 텍스트 순서로 확인합니다.
- 요약부터 읽으세요. 시간 범위, 레벨 집계, 예외, 감지된 형식, 가장 흔한 필드 키입니다. 요약은 항상 모든 이벤트를 대상으로 합니다.
- 레벨 칩을 누르거나 검색 상자에 입력해 목록을 좁히세요. 둘은 함께 적용됩니다. 행을 누르면 전체 메시지, 모든 필드, 예외 스택, 원본 줄이 펼쳐지고 필터된 이벤트를 JSON으로 복사하거나 내려받을 수 있습니다.
예시
원시 로그
2026-10-20T13:55:36.123Z INFO [gateway] 요청 수신 path=/api/orders user_id=4821
{"@timestamp":"2026-10-20T13:55:37.004Z","level":"error","service":"payment","message":"결제 실패","order_id":"A-1042","user_id":4821}
127.0.0.1 - alice [20/Oct/2026:13:55:38 +0000] "POST /api/orders HTTP/1.1" 502 187 "-" "curl/8.5.0"
2026-10-20 13:55:40,512 ERROR [order-service] 처리되지 않은 예외
java.lang.IllegalStateException: 게이트웨이 시간 초과
at com.acme.Order.submit(Order.java:42)해석된 요약
이벤트: 4 · 줄: 6 시간 범위: 2026-10-20T13:55:36.123Z → 2026-10-20T13:55:40.512 (시간대 혼합) 레벨: 정보 1 · 오류 3 예외: 1 형식: JSON 1 · 웹 1 · 텍스트 2 필드: path 2 · user_id 2 · bytes 1 · client 1 · method 1 · order_id 1 · protocol 1 · status 1
JSON 줄은 이벤트 하나이고, Java 클래스 줄과 스택은 위 ERROR 이벤트의 이어지는 줄입니다. 시간대가 없는 텍스트 줄은 문자 그대로의 시계 시각으로 비교하므로 범위에 시간대 혼합이 붙습니다. HTTP 502는 오류로 세고 상태 코드는 원래 레벨로 계속 보입니다.
규칙, 한계, 알려진 문제
- 감지는 줄 단위로 순서대로 합니다. JSON(줄마다 객체 하나), logfmt(키=값 쌍 두 개 이상), Apache/Nginx common·combined 액세스 로그, syslog RFC 5424/3164, 그다음 지원하는 타임스탬프나 레벨로 시작하는 텍스트 순입니다. 나머지는 일반 이벤트로 남기며 어떤 줄도 버리지 않습니다.
- 모호하지 않은 타임스탬프만 정규화합니다. ISO 8601, 연도가 앞서는 날짜, Apache 액세스 로그 시각, 유닉스 초·밀리초입니다. 03/04/2026, 날짜만 있는 값, 연도 없는 syslog는 원문을 유지하고 정규화된 시각이 없습니다.
- 초의 소수 부분은 밀리초로 버리고 반올림하지 않습니다. 오프셋은 유지하며 오프셋이 없는 시각은 문자 그대로의 시계 시각으로 비교하고 요약에 naive나 mixed를 표시합니다.
- 레벨은 고정 어휘(영어와 중국어, 아랍어 단어), pino/bunyan 숫자, syslog PRI/severity, HTTP 상태(5xx 오류, 4xx 경고, 나머지 정보)에서 옵니다. 인식되는 레벨이 없는 줄은 정보가 아니라 알 수 없음입니다.
- 들여쓴 줄, 스택 프레임, Traceback, Exception in thread, Caused by 줄은 앞 이벤트에 붙습니다. 빈 줄이 스택을 끝냅니다. 휴리스틱이라 지원하지 않는 여러 줄 형식은 레코드 사이에 빈 줄이 필요할 수 있습니다.
- 예외는 Exception, Error, Throwable로 끝나는 클래스 이름에서 인식합니다. 가장 깊은 Caused by가 이깁니다. 프레임을 해석하지 않고 그 이상으로 근본 원인 순위를 매기지 않으며 AI 서비스를 호출하지 않습니다.
- 목록은 최대 200개 일치 이벤트를 그립니다. 집계, 요약, 복사, 내려받기는 항상 모든 일치를 포함하고 목록이 잘렸을 때 알려 줍니다.
- 입력 한도는 500만 자입니다. 50만 자를 넘어도 해석은 되지만 지연이 더 깁니다. 한 줄이 20만 자를 넘으면 일반 텍스트로 남깁니다.
- JSON 배열과 보기 좋게 들여쓴 여러 줄 JSON은 지원하지 않습니다. 줄마다 객체 하나만 됩니다. 잘못된 JSON, 주석, 끝 쉼표는 고치지 않고 일반 텍스트로 넘어갑니다.
- 아무것도 업로드하거나 저장하거나 URL에 넣지 않습니다. 파일은 브라우저 File API로 로컬에서 읽고 복사·내려받기는 버튼을 누를 때만 일어납니다.
관련 도구
로그를 구조화한 뒤 보통 이어서 하는 작업입니다.