[C언어] Data Conversion Tool - RawVera

 


◎ Log Tail 탭이 필요한 이유

  • 로그를 오래 보다 보면 필요한 기능은 생각보다 단순합니다. 
  • 마지막 몇 줄만 빠르게 보고 싶고, 두 로그 파일의 차이만 바로 확인하고 싶고, 필요하면 파일을 여러 조각으로 나눠 보관하고 싶습니다. 
  • RawVera의 Log Tail / Diff / Split 탭은 이런 요구를 한 화면에 모아 둔 기능으로, 대용량 로그 확인과 비교, 분할 저장을 모두 처리할 수 있게 설계되어 있습니다.

 

◎ 화면 구성과 기본 동작

  • 이미지 기준으로 화면은 상단의 파일 경로 입력부, 그 아래 옵션 영역, 검색 영역, 그리고 하단의 큰 로그 표시창으로 구성됩니다. 
  • 상단에는 Log File 입력칸과 파일 선택 버튼이 있고, 옆에 Diff와 Split 버튼이 배치되어 있습니다. 
  • 옵션 영역에서는 Top과 Bottom 표시 방식, 표시 줄 수, Auto-renew 1초 갱신을 조절할 수 있으며, 검색창에는 원하는 문자열을 넣고 Search를 실행할 수 있습니다.

 

◎ 단일 로그 열기와 Tail 보기

 - 이 탭의 기본 모드는 Tail 보기입니다. 

  • 즉, 로그 파일 전체를 다 보여주는 것이 아니라 위쪽부터 볼지, 아래쪽부터 볼지를 정하고, 그중에서 몇 줄만 가져와 표시하는 방식입니다. 
  • 코드에서는 최대 20줄까지 허용하고, 기본값은 10줄로 설정되어 있습니다. 
  • 실무에서는 최근 몇 줄만 보는 경우가 많기 때문에, 이런 구조가 꽤 실용적입니다.

 

 - Top과 Bottom 선택은 단순한 방향 차이 이상입니다.

  • Top은 파일 앞부분부터 지정 줄 수만큼 보여주고, Bottom은 파일 끝부분 기준으로 최근 줄을 보여줍니다.
  • 예를 들어 에러가 막 발생한 직후라면 Bottom이 유리하고, 초기 설정값이나 시작 배너를 확인하려면 Top이 유리합니다.
  • 같은 파일이라도 목적에 따라 바로 전환할 수 있어 탐색 속도가 빠릅니다.

 

◎ Diff 모드의 핵심 기능

 - Diff 모드는 이 탭의 가장 강력한 기능 중 하나입니다. 

  • 버튼을 누르면 왼쪽과 오른쪽에 두 로그 파일 경로가 생기고, 각각을 불러와 비교합니다. 
  • 차이 나는 줄은 노란색으로 강조되며, 동일한 줄은 일반 색으로 유지됩니다. 
  • 즉, 패치 전후 로그, 서로 다른 서버 로그, 배포 전후 이벤트를 한눈에 비교할 수 있습니다.

 

 - 코드상 Diff는 라인 인덱스를 먼저 만들어 두는 방식입니다.

  • 파일을 메모리 맵으로 읽고, 줄 단위 오프셋과 길이, 해시값을 계산한 뒤 비교합니다.
  • 해시가 있으면 대용량 파일에서도 비교 속도를 높일 수 있고, 해시가 없을 때는 실제 문자열 비교로 확인합니다.
  • 이 방식 덕분에 단순 텍스트 비교보다 빠르고 안정적으로 차이를 찾습니다.

 

 - Diff 화면에서는 두 패널의 스크롤도 함께 맞춰집니다.

  • 왼쪽이나 오른쪽을 스크롤하면 반대쪽도 같은 위치로 따라가도록 되어 있어서, 같은 지점의 차이를 연속적으로 확인하기 좋습니다.
  • 비교 중에 검색을 해도 현재 위치를 기준으로 하이라이트가 유지되므로, 변경 구간과 관심 구간을 동시에 추적할 수 있습니다.

 

 

 

◎ 검색, 하이라이트, 자동 갱신

 - 검색창은 일반 검색과 함께 vi 스타일 명령도 지원합니다. 

  • 코드에서는 s 명령을 통해 문자열 치환을 실행할 수 있고, g와 i 플래그도 지원합니다. 
  • 예를 들어 줄바꿈 제거 후 특정 문자열을 일괄 치환하는 식의 작업을 간단히 처리할 수 있습니다. 
  • 로그를 단순 감상하는 수준을 넘어, 빠르게 정리하고 가공하는 기능까지 들어 있는 셈입니다.

 

 - 검색 기능도 단순하지 않습니다.

  • Search 입력창에 문자열을 넣으면 하이라이트를 적용하고, 검색어가 비어 있으면 강조를 초기화합니다.
  • 코드에서는 대소문자 무시 검색도 처리하며, 검색 결과가 있으면 해당 위치로 스크롤을 이동시켜 바로 보이게 합니다.
  • 긴 로그에서 특정 IP, 에러 코드, 함수명, 사용자 ID를 찾을 때 유용합니다.

 

 - 자동 갱신 기능도 눈에 띕니다.

  • Auto-renew 1s를 체크하면 1초마다 파일 변경을 감시하고, 크기나 수정 시간이 바뀌면 내용을 다시 불러옵니다.
  • 코드에서는 파일 크기와 수정 시각을 저장해 두었다가 변경 여부를 확인한 뒤 다시 로드합니다.
  • 서버 로그나 실시간 수집 로그를 볼 때 특히 편리하며, 별도 새로고침을 누르지 않아도 변화가 반영됩니다.

 

 - 이 탭에는 Clear All 버튼도 있습니다.

  • 이 기능은 파일 경로, 오른쪽 비교 파일, 옵션, 검색어, 표시창 상태를 한 번에 초기화합니다.
  • 자동 갱신도 끄고, Diff 모드도 해제하며, 오른쪽 패널도 숨깁니다.
  • 여러 파일을 연속으로 분석할 때 이전 상태가 남아 헷갈리는 일을 줄여 주는 안전장치라고 보시면 됩니다.

 

◎ Split 기능과 저장 기능

 - Split 기능은 생각보다 실무적입니다. 

  • 하나의 큰 로그 파일을 사용자가 지정한 개수만큼 나눠서 저장할 수 있는데, 실제 라인 수를 계산한 뒤 각 조각에 몇 줄씩 배분할지 정해 파일을 생성합니다. 
  • 파일이 너무 짧으면 분할 개수를 자동으로 줄이고, 줄 수가 남지 않도록 나누는 방식이라 결과가 깔끔합니다.

 

 - 분할 저장 과정도 꽤 친절합니다.

  • 먼저 분할할 원본 파일을 고르고, 저장할 폴더를 지정한 뒤, 몇 개로 나눌지를 입력합니다.
  • 그 다음 원본의 줄 수를 계산하고 각 파트의 줄 수를 분배한 뒤, _01, _02 같은 접미사를 붙여 저장합니다.
  • 대용량 로그를 아카이브하거나, 팀원별로 나눠 전달할 때 유용합니다.

 

 - 저장 기능도 있습니다.

  • Diff 모드에서 오른쪽 패널은 편집 가능하도록 열리며, Save 버튼을 누르면 변경된 내용을 UTF-8 파일로 다시 기록합니다.
  • 저장 전에는 정말 덮어쓸지 묻는 확인창이 뜨므로 실수로 원본을 잃을 가능성을 줄여 줍니다.
  • 비교 결과를 수정한 뒤 바로 저장하는 용도로 쓰기 좋습니다.

 

 - UI 구성 측면에서도 꽤 세심합니다.

  • 로그 영역은 RichEdit로 만들어져 있어 긴 텍스트를 안정적으로 다룰 수 있고, 좌우 패널의 배경색과 강조 색도 구분됩니다.
  • 검색 하이라이트는 청록색 계열, Diff 하이라이트는 노란색 계열로 표시되어 눈에 잘 들어옵니다.
  • 긴 로그를 오래 들여다볼 때 시각적인 피로를 줄이는 데 도움이 됩니다.

 

◎ 실무에서 특히 유용한 활용 포인트

 - 실무적으로는 다음 상황에서 특히 유용합니다. 

  • 서버 장애 직후 마지막 에러 라인만 빨리 보고 싶을 때, 운영 전후 로그 차이를 비교하고 싶을 때, 대용량 로그를 여러 조각으로 나눠야 할 때, 그리고 특정 키워드만 빠르게 찾고 싶을 때입니다. 
  • 단일 보기, 비교 보기, 분할 저장을 모두 한 탭에서 처리하니, 별도 텍스트 에디터를 오갈 필요가 줄어듭니다.

 

◎ 마무리 정리

  • 정리하면 RawVera Log Tail / Diff / Split 탭은 로그 tail 확인, 자동 갱신, 검색 하이라이트, 양파일 차이 비교, vi 스타일 치환, 파일 분할 저장, 결과 저장을 한 번에 다루는 실전형 도구입니다. 
  • 단순히 “로그를 보는 창”이 아니라, 로그를 빠르게 읽고 비교하고 정리하는 작업대라고 보시면 이해가 가장 쉽습니다.

 

 

 

반응형

+ Recent posts