EventLog

Program/C# 2008. 4. 10. 11:46
프로그램의 런타임시에 어찌 돌아가는지 혹은 문제는 없는지 보통 Log 파일을 기록합니다.
무식하게 텍스트 파일에 때려 넣었었는데 아래와 같은게 있네요..
사용법은 간단합니다. 자세한 사항에 대해서는 귀찮아서 조사 안해봤네요...
MSDN 긁어왔습니다 -0-;

──────────────────────────────────────────────────

간단한 사용법

string 타입의 Source 와 LogName 이 필요합니다.

// Source 를 생성합니다.
if (!System.Diagnostics.EventLog.SourceExists("Source"))
                    System.Diagnostics.EventLog.CreateEventSource("LogName", ""Source");

// 이벤트를 기록합니다.
System.Diagnostics.EventLog.WriteEntry(LogFileName, Msg);
WriteEntry 함수는 여러 가지로 오버라이드되어 있군요.. 입맛에 맞게 사용하시면 될 것 같습니다.

──────────────────────────────────────────────────

비스타 기준  [제어판] [관리도구] [이벤트뷰어]
왼쪽 트리에 보시면 LogName 라고 확인 하실수 있을 겁니다.
사용자 삽입 이미지


──────────────────────────────────────────────────

EventLog 클래스

스레드로부터 안전한 방식

이 형식의 모든 public static(Visual Basic에서는 Shared) 멤버는 스레드로부터 안전합니다. 하지만 인스턴스 멤버는 스레드로부터 안전하지 않습니다.

설명

EventLog를 사용하면 중요한 소프트웨어 또는 하드웨어 이벤트 정보가 기록되어 있는 Windows 2000 이벤트 로그에 액세스하거나 사용자 지정할 수 있습니다. 예를 들어, EventLog를 사용하여 기존 로그를 읽고, 로그에 엔트리를 쓰고, 이벤트 소스를 만들거나 제거하고, 로그를 삭제하고, 로그 엔트리에 응답할 수 있습니다. 또한 이벤트 소스를 만들 때 새로운 로그를 만들 수도 있습니다.

CreateEventSource를 호출할 때 지정한 로그가 컴퓨터에 없으면 사용자 지정 로그가 새로 만들어지고 응용 프로그램이 해당 로그의 소스로 등록됩니다. 따라서 EventLog 클래스를 사용하면 적절한 액세스 권한이 있는 이벤트 로그에서 엔트리를 쓰거나 읽을 수 있습니다.

참고   보안 로그는 읽기 전용입니다.

이벤트 로그에 쓸 경우 Source 이벤트를 지정하거나 만들어야 합니다. Source 는 이벤트 로그에 응용 프로그램을 유효한 엔트리 소스로 등록합니다. Source를 사용하면 한 번에 하나의 로그에만 쓸 수 있습니다. Source 에는 여러 가지 문자열을 사용할 수 있지만 시스템에 있는 다른 소스와는 다른 이름을 사용해야 합니다. 대개 소스에는 응용 프로그램 이름 또는 다른 특정 문자열이 사용됩니다. 중복된 Source 값을 만들려고 하면 예외가 throw됩니다. 그러나 하나의 이벤트 로그에 여러 개의 소스를 연결할 수 있습니다.

로그를 읽으려면 EventLogLog 이름 및 MachineName (서버 컴퓨터 이름)을 지정합니다. 소스는 로그에 기록하는 경우에만 필요하기 때문에 Source를 지정할 필요가 없습니다. Entries 멤버는 자동으로 엔트리의 이벤트 로그 목록으로 채워집니다.

참고    Log/ MachineName 쌍을 지정하여 로그에 연결하는 경우 MachineName을 지정할 필요가 없습니다. MachineName을 지정하지 않으면 기본적으로 로컬 컴퓨터(".")가 지정됩니다.

이벤트 로그에 쓸 때 message 매개 변수와 함께 보낼 정보 형식을 지정할 수 있습니다. 메시지를 보내는 것 외에 메시지가 오류, 경고 또는 정보 엔트리 형식인지 여부를 나타내는 EventLogEntryType을 보낼 수 있습니다. 또한 응용 프로그램 정의 eventIdcategory 매개 변수를 지정하여 이벤트 뷰어의 형식 및 범주 열에 표시할 수 있습니다. 그리고 지정한 이벤트에 추가 정보를 연결하는 경우 이벤트 엔트리에 이진 데이터를 첨부할 수도 있습니다.

EventLog 클래스는 개별 이벤트 로그 및 해당 엔트리에 대한 액세스 뿐만 아니라 모든 이벤트 로그 컬렉션에 대한 액세스도 제공합니다. EventLog의 정적(Visual Basic에서는 Shared) 멤버를 사용하여 로그를 삭제하고, 로그 목록을 가져오고, 소스를 만들거나 삭제하고, 컴퓨터에 특정 소스가 이미 포함되어 있는지 여부를 확인할 수 있습니다.

Windows 2000에는 응용 프로그램, 시스템 및 보안의 3가지 기본 로그가 있습니다. 다른 응용 프로그램이나 Active Directory와 같은 서비스가 설치되어 있으면 이벤트 로그가 더 있을 수 있습니다. EventLog를 사용하여 서버의 이벤트 뷰어를 통해 볼 수 있는 사용자 지정 이벤트 로그를 만들 수 있습니다.

이벤트 로그에 쓰는 경우 디스크 공간, 프로세서 시간 및 기타 시스템 리소스가 사용됩니다. 따라서 필수 정보만 기록해야 합니다. 또한 성능에 좋지 않은 영향을 주지 않도록 기본 코드 경로 대신 오류 경로에 이벤트 로그 호출을 배치하는 것이 좋습니다.

EventLog 인스턴스의 초기 속성 값 목록을 보려면 EventLog 생성자를 참조하십시오.

: