로그 파일을 읽는 경우가 종종 있는데, 로그 중에 계속 쌓이는 로그를 연속으로 볼 때가 있다.
이 경우 tail viewer 혹은 log tail viewer 들이 있는데, 그 툴을 활용하면, 계속 쌓이는 로그를 실시간으로 볼 수 있다.
과거 떠돌이 프로젝트 수행 중에 받았던 파일이 있다. WinTail 이라는 프로그램 인데, 그 프로그램이 그런 역할을 수행해줬다. 속도도 빠르고 좋았던 기억.

문제는 한글이 깨져서 나온다. 한글로 적힌 로그가 나오면 그대로 깨져서 나온다는..
아마도 C++로 만든거 같은데, 과거 인코딩과 거리가 멀던 그 시절에 만들어진 프로그램 같다.
이번에 작성 중인 프로그램도 로그 파일을 쌓고 있는데, 문제는 로그 내용을 한글로 적었다는 것. 
결국 무슨 말인지 알 길이 없어서, 직접 만들어야 겠다는 생각이 들었다.

image_2

 

.NET Framework 2.0을 기반으로 하며, C#으로 짰다. 모든 Visual Studio 2010 에서 작업했다.

처음에는 ListBox를 사용하여 로그 파일을 열었다. 
최소한 내가 만드는 로그 보는데는 문제가 없었다.
그래서 자신만만(?)하게 지인인 호박양에게 전달했는데,
왠걸...IIS 로그를 넣어 봤는데, All Stop 이라고 Report 해줬다.

즉, NET 기본 컨트롤로는 로그 Viewer로 쓰기에는 너무나 부적합했다는 것이다. 결국 이렇게 저렇게 검색을 하다가 우연히 발견한 오픈소스 기반의 Text Viewer인 Scintilla 를 찾았다. 이 Viewer는 C++로 되어 있으며, Win32와 GTK+ 기반으로 되어 있다. 소스 코드 에디터 처럼 특정 문자에 색을 입히거나, 코드를 묶어서 접고 펼치기 등, 다양한 소스코드 관련 Editor Viewer로 활용되는 유명한 솔루션. (현재 2.27 버전이며, 2011년 6월 20일이 최종 수정)

그것을 .NET으로 포팅한 프로젝트가 있었으니, 그것이 ScintillaNET 이였다.
일단 ScinitillaNET의 코드를 특별히 수정할 필요는 없었고, Binary 파일( http://scintillanet.codeplex.com/releases/view/34393#DownloadId=88753 )을 직접 받았다. 이 구성요소를 가지고 프로그래밍을 하려면, 최소한 SciLexer.dll 파일이 System32 에 위치해야 한다. 그리고 ScintillaNet.dll 파일을 프로젝트에 Reference를 걸어주면 된다. 물론 배포 할 때는 저 두 개의 파일이 실행되는 파일과 같은 경로에만 있으면 된다.

그래서 한번 돌려봤더니..

image_4

특정 경로의 파일을 열고, Start 하면 된다. 중간에 화면 Clear가 필요하면 Clear 로그를, Log 파일 내용을 완전히 지우고 싶으면 Trunc 로그를 하면 된다.

사용법은 그렇게 어려운편은 아니니 Pass.

소스 파일과 실행파일 묶음은 첨부로 올린다.
아, 이거 돌릴려면 최소한 .NET Framework 2.0 이상이 설치되어 있어야 한다.

728x90

+ Recent posts