닷넷에서 디버그 출력을 파일로 저장하기
닷 넷 응용 프로그램을 작성할 때, 디버그 정보를 디버그 출력 창에 출력하는 것 이외에도 파일로 로그를 남기는 기능이 필요할 때가 있습니다. System.Diagnostics 네임스페이스에서는 리스너 컬렉션을 제공함으로써 이러한 기능을 제공하고 있습니다.
안녕하세요 : )
닷 넷 프레임워크를 사용하면서, 디버깅을 할 때의 간단한 팁을 소개할까 합니다. Kenial의 경우에는 System.Diagnostics.Debug.WriteLine() 메서드만으로는 디버그 정보를 파일로 남기기가 불편해서, 따로 디버그 내용을 파일로 출력하는 클래스를 만들어 썼었는데, 알고보니 그런 기능을 제공하는 개체가 있었습니다 ^^;
그럼 시작합니다 : )
TextWriterTraceListener 클래스
사실 소스 코드가 간단해서, 그렇게 설명할 것도 별로 없을 것 같다. 일단 소스를 보자 :
StreamWriter writer = new StreamWriter(
File.Open("C:\\Log.txt", FileMode.Append));
TextWriterTraceListener listener = new TextWriterTraceListener(writer);
Debug.Listeners.Add(listener);
Debug.WriteLine(string.Format("{0} : Test Log.", DateTime.Now));
Debug.WriteLine(string.Format("{0} : Test Log2.", DateTime.Now));
Debug.Flush();
writer.Close();
StreamWriter 는 string을 특정 스트림에 기록하기 위한 출력 스트림이다. 위에서 선언된 writer는 C드라이브 루트에 Append 모드로 파일을 열고, 스트림에 파일을 연결한다. writer 출력 스트림으로 출력되는 내용은 c:\log.txt 파일에 기록되게 된다.
TextWriterTraceListener는 이런 문자 기반 출력 스트림에 listener를 연결, 특정 내용이 수신될 때 마다(여기서는 Debug.Write() 관련 작업이 일어날 때 마다) 해당 출력 스트림으로 수신된 내용을 전달하며,
Debug.Listeners는 Debug에서 뭔가가 출력됐을 때 그 내용을 받을 listener들의 컬렉션이다. 이 컬렉션에 저장된 리스너라면 모두 해당 내용을 받게 된다.
위 코드를 실행하면 디버그 창에 아래와 같은 내용이 출력되며 :
c:\log.txt 파일에도 같은 내용이 기록된다 :
정리
아 주 간단한 내용입니다만, Trace와 함께 활용한다면 실제 프로그램을 배포하고 난 후 로그 정보를 모을 때도 유용하게 사용할 수 있을 것입니다. Trace에도 Listeners 컬렉션이 존재하며, 마찬가지로 TextWriterTraceListener를 추가함으로써 디버그 메시지를 수신할 수 있습니다.
그럼 : )
'TechLog' 카테고리의 다른 글
닷넷에서 윈도우 서비스 제어하기 ; ServiceController (0) | 2008.11.19 |
---|---|
Microsoft BI Demo VPC 5.1 (0) | 2008.11.19 |
웹 서비스 팁 ; 세션 사용하기, 함수의 설명 제공하기 (0) | 2008.11.04 |
닷넷에서 텍스트를 프린터로 출력하기 (2) | 2008.11.03 |
닷넷 프레임워크의 스트림 이해하기 (0) | 2008.10.31 |