방법: 이벤트 로그에 엔트리 쓰기

업데이트: 2007년 11월

이벤트 로그에 엔트리를 쓸 때 로그에 쓸 메시지를 문자열로 지정합니다. 메시지에는 문제의 원인과 해결 방법을 찾는 데 필요한 모든 정보가 들어 있어야 합니다.

두 가지 방법을 사용하여 로그에 엔트리를 쓸 수 있으며 두 방법 모두 똑같이 유효합니다. 가장 직접적인 방법은 기록할 로그에 이벤트 소스를 등록한 다음 구성 요소의 인스턴스를 만들고 Source 속성을 해당 로그로 설정하고 WriteEntry를 호출하는 것입니다. 이렇게 하면 이미 등록된 소스에 연결할 때 로그를 자동으로 확인하므로 구성 요소의 인스턴스에 대한 Log 속성을 설정할 필요가 없습니다. 소스 등록에 대한 자세한 내용은 방법: 응용 프로그램을 이벤트 로그 엔트리의 소스로 추가를 참조하십시오.

다른 방법은 EventLog 구성 요소의 인스턴스를 만들고 Source, MachineNameLog 속성을 설정한 다음 WriteEntry 메서드를 호출하는 것입니다. 이 경우 WriteEntry 메서드는 소스가 이미 있는지 확인한 다음 소스가 없는 경우 바로 소스를 등록합니다.

성공적으로 로그 엔트리를 쓰는 데 필요한 조건은 다음과 같습니다.

  • 해당 로그에 소스가 등록되어 있어야 합니다.

    참고:

    로그에 엔트리를 쓰려면 EventLog 구성 요소의 Source 속성을 설정해야 합니다. 구성 요소에서 엔트리를 쓸 경우, 지정한 소스가 구성 요소에서 엔트리를 쓰는 이벤트 로그에 등록되어 있는지 자동으로 검사되며 필요하면 CreateEventSource가 호출됩니다. 일반적으로 응용 프로그램을 설치하는 동안 새 이벤트 소스를 만듭니다. 이렇게 하면 운영 체제에서 등록된 이벤트 소스의 목록과 구성을 새로 고칠 수 있습니다. 운영 체제에서 이벤트 소스 목록을 새로 고치지 않은 상태에서 새 소스로 이벤트를 쓰려고 하면 쓰기 작업이 실패합니다. 설치하는 동안 소스를 만들 수 없는 경우에는 처음 쓰기 작업을 하기 전(대개의 경우 응용 프로그램 초기화 도중)에 소스를 만드십시오. 이 방법을 사용할 때는 초기화 코드가 컴퓨터에서 관리자 권한으로 실행되도록 해야 합니다. 새 이벤트 소스를 만들려면 이 권한이 필요합니다.

  • 길이가 16K를 초과하는 메시지를 지정할 수 없습니다.

  • 응용 프로그램은 대상 로그에 대해 쓰기 권한이 있어야 합니다. 자세한 내용은 이벤트 로그의 보안 구분을 참조하십시오.

엔트리를 쓸 때 작성 중인 엔트리의 형식, 이벤트를 식별하는 ID, 범주, 엔트리에 첨부할 이진 데이터 등 여러 매개 변수를 지정할 수 있습니다.

이벤트 로그 엔트리를 쓰려면

  1. EventLog 구성 요소의 인스턴스를 만듭니다. 자세한 내용은 방법: EventLog 구성 요소 인스턴스 만들기를 참조하십시오.

  2. CreateEventSource 메서드를 사용하여 소스 문자열의 고유한 문자열로 된 이벤트 소스를 엔트리를 쓸 대상 로그에 등록합니다. 구성 요소의 Source 속성을 등록한 소스로 설정합니다. 자세한 내용은 방법: EventLog 구성 요소 인스턴스 구성을 참조하십시오. WriteEntry 메서드를 호출하여 로그에 쓸 엔트리를 지정합니다.

    If Not EventLog.SourceExists("MyApp1") Then
        EventLog.CreateEventSource("MyApp1", "Application")
    End If
    EventLog1.Source = "MyApp1"
    EventLog1.WriteEntry("This is a simple event log entry")
    
         if (!System.Diagnostics.EventLog.SourceExists("MyApp1"))
                System.Diagnostics.EventLog.CreateEventSource(
                   "MyApp1", "Application");
    
            EventLog1.Source = "MyApp";
            EventLog1.WriteEntry("This is a simple event log entry");
    

지역화된 이벤트 로그 엔트리를 쓰려면

  1. EventLog 구성 요소의 인스턴스를 만듭니다. 자세한 내용은 방법: EventLog 구성 요소 인스턴스 만들기를 참조하십시오.

  2. 지역화된 이벤트 로그 엔트리를 쓰려면 WriteEvent 메서드를 사용합니다. 이 경우 문자열 값이 아니라 리소스 식별자로 이벤트 속성을 지정합니다. 이벤트 뷰어에서는 리소스 식별자를 사용하여 소스에 대한 지역화된 리소스 파일에 있는 해당 문자열을 표시합니다. 리소스 식별자를 사용하여 이벤트를 쓰기 전에 소스를 해당 리소스 파일에 등록해야 합니다. 리소스 파일 등록에 대한 자세한 내용은 EventSourceCreationData 클래스를 참조하십시오.

    If Not EventLog.SourceExists("MyApp1") Then
        EventLog.CreateEventSource("MyApp1", "Application")
    End If
    EventLog1.Source = "MyApp1"
    EventLog1.WriteEvent(New EventInstance(1, 1), New String() {"message"})
    
         if (!System.Diagnostics.EventLog.SourceExists("MyApp1"))
                System.Diagnostics.EventLog.CreateEventSource(
                   "MyApp1", "Application");
    
            EventLog1.Source = "MyApp";
            EventLog1.WriteEvent(new System.Diagnostics.EventInstance(1, 1), new string[] { "message" });
    

참고 항목

작업

방법: EventLog 구성 요소 인스턴스 구성

방법: EventLog 구성 요소 인스턴스 만들기

방법: 응용 프로그램을 이벤트 로그 엔트리의 소스로 추가

연습 : 이벤트 로그, 이벤트 소스 및 엔트리 살펴보기

개념

EventLog 구성 요소 소개

참조

EventLog