Window Event log 는 어플리케이션 에러나 중요한 이벤트를 저장할 장소로 아주 좋은곳이다.
왜냐하면 모든 윈도우 이벤트는 같은 콘솔에서 쉽게 조회할수 있기때문이다.
이것은 프로그램을 관리하는데 아주 편리한 이점이 있다. 왜냐하면 여러프로그램이 돌아가고있는
서버에서 각 프로그램마다 로그를 확인하기 위해 여러 창을 열어 관리해야되는 불편함을
없애주기 때문이다.
그리고 특정 어플리케이션이 로그양이 많아 따로 관리하고자 한다면 로그저장소를 따로 만들어서
관리할 수 있는 기능을 제공해준다.
아래 소스는 어떻게 이벤트 로그를 윈도우에 저장하는지 보여주고 있다.
static void Main(string[] args) { WriteEventLogEntry("This is an entry in the event log by daveoncsharp.com"); } private static void WriteEventLogEntry(string message) { // Create an instance of EventLog System.Diagnostics.EventLog eventLog = new System.Diagnostics.EventLog(); // Check if the event source exists. If not create it. if (!System.Diagnostics.EventLog.SourceExists("TestApplication")) { System.Diagnostics.EventLog.CreateEventSource("TestApplication", "Application"); } // Set the source name for writing log entries. eventLog.Source = "TestApplication"; // Create an event ID to add to the event log int eventID = 8; // Write an entry to the event log. eventLog.WriteEntry(message, System.Diagnostics.EventLogEntryType.Error, eventID); // Close the Event Log eventLog.Close(); }
WriteEventLogEntry
EventLog.SourceExists 함수로 TestApplication 이벤트 소스가 레지스틀에 존재하는지에
대한 여부를 체크한다. 만약 레지스트리에 등록되어있지 않다면 Application 이벤트 로그아래에
event source 생성하게 된다.
다음은 소스 이름을 셋팅한후 이벤트 아이디를 생성한다. 이 이벤트 아이디는 단지 이벤트
로그에 보여줄 숫자값이다. 이것은 개발자가 어플리케이션 이벤트를 추적하기 위해서 허용하는
것이다. 예를 들어 접속실패는 2, 파일을 찾지못한 에러일 때 3, 파일이 잠겼을 때 등을
번호로 붙여 관리하는것이다. 그렇게 해놓으면 숫자만 보고도 쉽게 어떤 에러인지 파악할수
있게 되는것이다.
마지막으로 상세메시지를 입력하고 WriteEntry 를 호출하면된다.
위에서 제시된 예제를 실행하게 되면 윈도우에서 기본적으로 제공하고 있는 Application
(응용프로그램) 란에 이벤트 로그가 쌓이게 된다.
System.Diagnostics.EventLog.CreateEventSource(“Application hang”, “MyLog”);
처럼 두번째 파라미터에 Application 대신 MyLog 를 넣게 되면 새로운 범주가 생기게 되고
첫번째 파라미터에는 기존에 존재하는 event source 외에 새로운 것을 넣어 실행한다.
위에서 말했듯이 로그량이 많아 따로 관리하기를 원한다면 이런식으로 소스를 적용하면된다.
'기타 언어 > C# & MFC' 카테고리의 다른 글
ListView 에서 행간간격을 조절하여 가독성을 높여보자 (0) | 2009.09.12 |
---|---|
에러 - Unable to find manifest signing certificate in the certificate store (1) | 2009.09.10 |
C# using 사용법 (0) | 2009.09.04 |
C# String Literal 문자열 처리방법 - @ (0) | 2009.09.04 |
C# 데이타 베이스 처리를 위한 클래스 - Access DB (0) | 2009.08.31 |
C# 문자열 날짜형식 포맷팅 (0) | 2009.08.31 |
C# 문자열 숫자형식 포맷팅 (0) | 2009.08.31 |
C# ComboBox 에서 선택 내용 수정막기 (0) | 2009.08.23 |