로그 파서 및 가리기

운영 로그 파일을 넣으면 필터링 가능한 표가 나옵니다. Apache/Nginx, JSON Lines, syslog를 자동으로 인식하고, 민감한 값을 가리고, 깨끗한 CSV, JSON 또는 텍스트를 내보냅니다. 파일은 브라우저를 절대 떠나지 않습니다 — 파싱은 로컬에서 일어나며, 그것이 바로 이 페이지가 존재하는 이유입니다.

이 페이지가 로그에 하는 일

로그 파일은 표가 되어야 비로소 쓸모가 있습니다. 한 열에는 시간, 다른 열에는 수준, 그리고 원시 텍스트를 스크롤하지 않고도 읽을 수 있는 메시지. 이 페이지는 각 줄을 그런 열로 파싱하고, 수준을 세고, 중요한 행만 골라낼 수 있게 합니다 — 오류만, 또는 하나의 호스트 이름, 하나의 경로, 하나의 사용자를 언급한 전부. 표는 일치하는 처음 1,000개 행을 보여주고, 개수는 읽은 모든 것을 포괄하므로 필터가 아홉 행을 숨겼는지 구천 행을 숨겼는지 항상 알 수 있습니다.

파일은 하나의 문자열로 불러오지 않고 1 MB 청크로 읽으므로, 몇 메가바이트짜리 운영 로그도 불러오는 동안 탭이 멈추지 않습니다. 파싱된 처음 20,000개 행은 필터링과 내보내기를 위해 보관되고, 그 이상에서는 페이지가 여전히 모든 줄을 세어 합계를 솔직하게 보고합니다. 파일이 그보다 크다면 내보내기 전에 필터링하거나, 파일을 나눠 두 번 돌리세요. 이 흐름의 어떤 부분도 네트워크에 닿지 않습니다. File API가 바이트를 읽고, 파서는 페이지 안에서 실행되며, 내보내기는 같은 로컬 행으로 조립됩니다.

가리기는 패턴 매칭이지 보증이 아닙니다

가리기는 공유된 로그에서 가장 자주 새어 나가는 값을 숨깁니다. 이메일 주소, IP 주소, Bearer 토큰, AWS 액세스 키 ID, 그리고 api_key, secret, password, token 레이블 뒤에 쓰인 값들입니다. 기본으로 켜져 있으며 표와 모든 내보내기 형식에 적용됩니다. 하지만 이것은 패턴 매칭이고, 패턴은 놓치는 것이 있습니다 — 특이한 형식의 토큰, 여러 줄에 나뉜 비밀, 고객을 특정하는 내부 호스트 이름. 내보내기를 안전한 것이 아니라 더 안전한 것으로 취급하세요. 어딘가로 보내기 전에, 특히 조직 밖으로 보내기 전에 한 번 읽어 보세요. 직접 디버깅하기 위해 원본 값이 필요하다면 가리기를 끄세요 — 토글은 표 바로 위에 있습니다.

그 구분이 바로 이 페이지가 존재하는 이유입니다. 운영 로그를 채팅 창이나 온라인 뷰어에 붙여넣으면 그 내용이 영원히 제3자에게 넘어갑니다. 로컬에서 파싱하면 아무에게도 아무것도 넘어가지 않습니다. 호스팅된 뷰어의 편의는 로그의 내용과 맞바꿀 가치가 결코 없으며, 요청을 절대 보내지 않는 브라우저 탭이 그것을 확신하는 가장 간단한 방법입니다.

자주 묻는 질문

내 로그 파일이 브라우저를 떠나나요?

아니요. 파일은 File API로 읽혀 로컬에서 파싱됩니다. 아무것도 업로드되지 않으며 서버 호출이 전혀 없습니다. 그게 핵심입니다. 운영 로그에는 채팅 창에 붙여넣거나 아무 뷰어에나 업로드해서는 안 되는 주소, 토큰, 사용자 데이터가 들어 있습니다.

어떤 로그 형식이 인식되나요?

Apache/Nginx combined 액세스 로그, JSON Lines(한 줄에 JSON 객체 하나), syslog 줄, 그리고 모든 줄에서 수준 키워드를 스캔하는 일반 폴백입니다. 자동 감지는 combined, JSON, syslog, 일반 순으로 시도합니다 — 자동 감지가 틀리면 형식을 직접 선택하세요.

가리기는 실제로 무엇을 숨기나요?

이메일 주소, IPv4 및 IPv6 주소, Bearer 토큰, AWS 액세스 키 ID, 그리고 api_key/secret/password/token 레이블 뒤의 값입니다. 패턴 매칭이지 보증은 아닙니다. 특이한 형식은 빠져나가므로, 내보내기를 어딘가로 보내기 전에 검토하세요. 가리기는 기본으로 켜져 있으며 표와 내보내기 모두에 적용됩니다.

얼마나 큰 파일을 열 수 있나요?

파일은 1 MB 청크로 읽히므로 몇 메가바이트짜리 로그도 탭을 멈추지 않습니다. 모든 줄이 세어지고, 파싱된 처음 20,000개 행이 필터링과 내보내기를 위해 보관되며, 표는 일치하는 처음 1,000개 행을 보여줍니다. 더 큰 작업이라면 먼저 필터링한 뒤 내보내세요.

어떤 행은 오류처럼 보이는데 왜 수준이 "info"인가요?

액세스 로그에는 수준 필드가 없어서 수준을 HTTP 상태에서 추론합니다. 5xx는 오류, 4xx는 경고, 나머지는 전부 정보입니다. JSON 줄은 자체 수준 필드가 있으면 그것을 사용합니다. 행이 잘못 분류된 것처럼 보이면, 그 옆의 상태 코드나 메시지 텍스트가 기준 진실입니다.