다음을 통해 공유


EventLog 클래스

정의

Windows 이벤트 로그와의 상호 작용을 제공합니다.

public ref class EventLog : System::ComponentModel::Component, System::ComponentModel::ISupportInitialize
public class EventLog : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize
type EventLog = class
    inherit Component
    interface ISupportInitialize
Public Class EventLog
Inherits Component
Implements ISupportInitialize
상속
구현

예제

다음 예제에서는 이벤트 원본이 없는 경우 이벤트 원본 MySource 을 만들고 이벤트 로그 MyNewLog에 항목을 씁니다.

메모

관리자 권한으로 이 애플리케이션을 실행해야 합니다.

using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource"))
        {
             //An event log source should not be created and immediately used.
             //There is a latency time to enable the source, it should be created
             //prior to executing the application that uses the source.
             //Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog");
            Console.WriteLine("CreatedEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing to event log.");
    }
}
Option Explicit
Option Strict

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        
        If Not EventLog.SourceExists("MySource") Then
            ' Create the source, if it does not already exist.
            ' An event log source should not be created and immediately used.
            ' There is a latency time to enable the source, it should be created
            ' prior to executing the application that uses the source.
            ' Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog")
            Console.WriteLine("CreatingEventSource")
            'The source is created.  Exit the application to allow it to be registered.
            Return
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
    End Sub
End Class

설명

EventLog 에서는 중요한 소프트웨어 또는 하드웨어 이벤트에 대한 정보를 기록하는 Windows 이벤트 로그에 액세스하거나 사용자 지정할 수 있습니다. 기존 EventLog로그에서 읽고, 로그에 항목을 쓰고, 이벤트 원본을 만들거나 삭제하고, 로그를 삭제하고, 로그 항목에 응답할 수 있습니다. 이벤트 원본을 만들 때 새 로그를 만들 수도 있습니다.

중요합니다

이 형식은 IDisposable 인터페이스를 구현합니다. 형식 사용을 마쳤으면 직접 또는 간접적으로 삭제해야 합니다. 형식을 직접 삭제하려면 Disposetry/ 블록에서 해당 catch 메서드를 호출합니다. 간접적으로 삭제하려면 using(C#) 또는 Using(Visual Basic)와 같은 언어 구문을 사용합니다. 자세한 내용은 인터페이스 항목의 "IDisposable을 구현하는 개체 사용" 섹션을 IDisposable 참조하세요.

개별 이벤트 로그 및 해당 항목에 대한 액세스를 제공하는 것 외에도 클래스를 EventLog 사용하면 모든 이벤트 로그의 컬렉션에 액세스할 수 있습니다. 멤버 EventLogstatic 사용하여 로그를 삭제하거나, 로그 목록을 얻거나, 원본을 만들거나 삭제하거나, 컴퓨터에 특정 원본이 이미 포함되어 있는지 확인할 수 있습니다.

애플리케이션, 시스템 및 보안의 세 가지 기본 이벤트 로그가 있습니다. 보안 로그는 읽기 전용입니다. Active Directory와 같이 설치하는 다른 애플리케이션 및 서비스에는 추가 이벤트 로그가 있을 수 있습니다.

클래스를 사용하는 경우 보안 고려 사항이 있습니다 EventLog . EventLog 에는 EventLogPermission 특정 작업에 대한 권한이 필요합니다. 부분적으로 신뢰할 수 있는 EventLogPermission 코드에는 부여하지 않는 것이 좋습니다. 이벤트 로그 개체(포함 및 EventLogEntry 개체)EventLogEntryCollection를 덜 신뢰할 수 있는 코드에 전달해서는 안 됩니다. 예를 들어 개체를 EventLog 만들고, 항목을 작성한 다음, 개체를 부분적으로 신뢰할 수 있는 코드에 전달 EventLog 하면 보안 문제가 발생할 수 있습니다. 이벤트 로그를 읽고 쓰는 기능을 통해 코드가 다른 애플리케이션의 이름으로 이벤트 로그 메시지를 발급하는 등의 작업을 수행할 수 있기 때문입니다.

Windows Vista부터 UAC(사용자 계정 컨트롤)는 사용자의 자격 증명을 결정합니다. 기본 제공 관리자 그룹의 구성원인 경우 표준 사용자 액세스 토큰과 관리자 액세스 토큰이라는 두 개의 런타임 액세스 토큰이 할당됩니다. 기본적으로 표준 사용자 역할에 있습니다. 보안 로그에 액세스하는 코드를 실행하려면 먼저 자격 증명을 표준 사용자에서 관리자로 승격해야 합니다. 애플리케이션의 바로 가기 메뉴를 열고(마우스를 사용하는 경우 애플리케이션 아이콘을 마우스 오른쪽 단추로 클릭) 관리자 권한으로 실행하려는 경우 애플리케이션을 시작할 때 이 작업을 수행할 수 있습니다.

서버의 이벤트 뷰어를 통해 볼 수 있는 사용자 지정 이벤트 로그를 만드는 데 사용할 EventLog 수 있습니다. 이벤트 뷰어에서 RegisterDisplayName 이벤트 로그의 지역화된 이름을 표시하려면 이 메서드를 사용합니다. 이 메서드를 ModifyOverflowPolicy 사용하여 최대 로그 크기에 도달하면 이벤트 로그의 동작을 구성합니다.

이벤트 로그에서 읽으려면 이벤트 로그의 로그 이름(Log 속성) 및 서버 컴퓨터 이름(속성)MachineName 을 지정합니다. 서버 컴퓨터 이름을 지정하지 않으면 로컬 컴퓨터 "."가 가정됩니다. 로그에 쓰는 데만 원본이 필요하기 때문에 이벤트 원본(Source 속성)을 지정할 필요는 없습니다. 속성은 Entries 이벤트 로그의 항목 목록으로 자동으로 채워집니다.

이벤트 로그에 쓰려면 이벤트 원본(Source 속성)을 지정하거나 만듭니다. 새 이벤트 원본을 만들려면 컴퓨터에 관리자 자격 증명이 있어야 합니다. 이벤트 원본은 애플리케이션을 이벤트 로그에 유효한 항목 원본으로 등록합니다. 이벤트 원본을 사용하여 한 번에 하나의 로그에만 쓸 수 있습니다. 이 속성은 Source 임의의 문자열일 수 있지만 이름은 컴퓨터의 다른 원본과 구별되어야 합니다. 이벤트 원본은 일반적으로 애플리케이션 또는 다른 식별 문자열의 이름입니다. 중복 Source 값을 만들려고 하면 예외가 throw됩니다. 그러나 단일 이벤트 로그는 여러 원본과 연결할 수 있습니다.

인스턴스와 연결된 이벤트 로그의 이벤트 원본이 EventLog 없으면 새 이벤트 원본이 만들어집니다. Windows Vista 이상 또는 Windows Server 2003에서 이벤트 원본을 만들려면 관리 자격 증명이 있어야 합니다.

이 요구 사항은 보안 로그를 포함한 모든 이벤트 로그를 검색하여 이벤트 원본이 고유한지 여부를 확인해야 하기 때문입니다. Windows Vista부터 사용자는 보안 로그에 액세스할 수 있는 권한이 없습니다. 따라서 a가 SecurityException throw됩니다.

중요합니다

이벤트 원본을 만들거나 삭제하려면 명명된 뮤텍스를 사용하여 기본 코드를 동기화해야 합니다. 권한이 높은 애플리케이션이 명명된 뮤텍스를 잠그는 경우 이벤트 원본을 만들거나 삭제하려고 하면 잠금이 해제될 때까지 애플리케이션이 응답을 중지합니다. 이 문제를 방지하려면 신뢰할 수 없는 코드에 대한 권한을 부여 UnmanagedCode 하지 마세요. 또한 UnmanagedCode 사용 권한은 잠재적으로 다른 사용 권한을 우회할 수 있도록 허용하며 매우 신뢰할 수 있는 코드에만 부여되어야 합니다.

애플리케이션 및 서비스는 애플리케이션 로그 또는 사용자 지정 로그에 기록해야 합니다. 디바이스 드라이버는 시스템 로그에 기록해야 합니다. 속성을 명시적으로 설정하지 않으면 이벤트 로그가 기본적으로 애플리케이션 로그로 설정 Log 됩니다.

메모

애플리케이션이 등록된 원본으로 작성되지 않도록 보호할 수 있는 것은 없습니다. 애플리케이션에 권한이 부여되면 Write 컴퓨터에 등록된 유효한 원본에 대한 이벤트를 작성할 수 있습니다.

이벤트 로그에 WriteEvent 이벤트를 쓰려면 메서드와 WriteEntry 메서드를 사용합니다. 이벤트를 작성하려면 이벤트 원본을 지정해야 합니다. 원본을 사용하여 첫 번째 항목을 작성하기 전에 이벤트 원본을 만들고 구성해야 합니다.

애플리케이션을 설치하는 동안 새 이벤트 원본을 만듭니다. 이렇게 하면 운영 체제에서 등록된 이벤트 원본 목록과 해당 구성을 새로 고칠 수 있습니다. 운영 체제에서 이벤트 원본 목록을 새로 고치지 않고 새 원본으로 이벤트를 작성하려고 하면 쓰기 작업이 실패합니다. 개체 또는 CreateEventSource 메서드를 사용하여 새 원본을 EventLogInstaller 구성할 수 있습니다. 새 이벤트 원본을 만들려면 컴퓨터에 관리자 자격 증명이 있어야 합니다.

각 원본은 한 번에 하나의 이벤트 로그에만 쓸 수 있습니다. 그러나 애플리케이션은 여러 원본을 사용하여 여러 이벤트 로그에 쓸 수 있습니다. 예를 들어 애플리케이션에는 여러 이벤트 로그 또는 다른 리소스 파일에 대해 구성된 여러 원본이 필요할 수 있습니다. 기존 원본의 구성 세부 정보를 변경하려면 원본을 삭제한 다음 새 구성을 사용하여 만들어야 합니다. 다른 애플리케이션 또는 구성 요소가 기존 원본을 사용하는 경우 기존 원본을 삭제하는 대신 업데이트된 구성으로 새 원본을 만듭니다.

이벤트 범주 및 메시지 문자열에 대한 지역화된 리소스에 이벤트 원본을 등록할 수 있습니다. 애플리케이션은 실제 문자열 값을 지정하는 대신 리소스 식별자를 사용하여 이벤트 로그 항목을 작성할 수 있습니다. 리소스 파일을 사용하여 EventLogInstallerEventSourceCreationData 원본을 구성하는 방법에 대한 자세한 내용은 및 클래스를 참조하세요.

애플리케이션이 이벤트 로그에 문자열 값을 직접 쓰는 경우 원본에 대한 리소스 파일 속성을 설정할 필요가 없습니다. 지역화된 항목을 작성하거나 직접 문자열을 작성하기 위해 원본을 구성해야 합니다. 애플리케이션에서 리소스 식별자와 문자열 값을 모두 사용하여 항목을 작성하는 경우 두 개의 개별 소스를 등록해야 합니다. 예를 들어 리소스 파일을 사용하여 하나의 원본을 구성한 다음 메서드에서 WriteEvent 해당 원본을 사용하여 이벤트 로그에 리소스 식별자를 사용하여 항목을 작성합니다. 그런 다음 리소스 파일 없이 다른 원본을 만들고 메서드에서 WriteEntry 해당 원본을 사용하여 해당 원본을 사용하여 이벤트 로그에 직접 문자열을 작성합니다.

이벤트를 작성할 때 적어도 메시지 문자열 또는 메시지 문자열에 대한 리소스 식별자를 지정해야 합니다. 다른 이벤트 속성은 선택 사항입니다. 선택적 이벤트 설정의 예는 다음과 같습니다.

  • 이벤트 뷰어가 항목에 EventLogEntryType 대해 표시하는 아이콘을 지정하도록 설정할 수 있습니다.

  • 애플리케이션에서 이벤트 필터링에 범주를 사용하는 경우 이벤트에 대한 범주 식별자를 지정할 수 있습니다.

  • 지정된 이벤트와 추가 정보를 연결하려는 경우 이벤트 항목에 이진 데이터를 연결할 수 있습니다.

중요합니다

이벤트 로깅은 디스크 공간, 프로세서 시간 및 기타 시스템 리소스를 사용합니다. 필수 정보만 기록하는 것이 중요합니다. 기본 코드 경로가 아닌 오류 경로에 이벤트 로그 호출을 배치하여 성능에 부정적인 영향을 주지 않도록 하는 것이 좋습니다.

인스턴스 EventLog의 초기 속성 값 목록은 생성자를 참조 EventLog 하세요.

생성자

Name Description
EventLog()

EventLog 클래스의 새 인스턴스를 초기화합니다. 인스턴스를 로그와 연결하지 않습니다.

EventLog(String, String, String)

EventLog 클래스의 새 인스턴스를 초기화합니다. 인스턴스를 지정된 컴퓨터의 로그와 연결하고 지정된 소스를 EventLog만들거나 할당합니다.

EventLog(String, String)

EventLog 클래스의 새 인스턴스를 초기화합니다. 인스턴스를 지정된 컴퓨터의 로그와 연결합니다.

EventLog(String)

EventLog 클래스의 새 인스턴스를 초기화합니다. 인스턴스를 로컬 컴퓨터의 로그와 연결합니다.

속성

Name Description
CanRaiseEvents

구성 요소가 이벤트를 발생시키는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 Component)
Container

IContainer 포함하는 값을 가져옵니다 Component.

(다음에서 상속됨 Component)
DesignMode

현재 디자인 모드인지 여부를 Component 나타내는 값을 가져옵니다.

(다음에서 상속됨 Component)
EnableRaisingEvents

이벤트 알림을 받는 EntryWritten 지 여부를 EventLog 나타내는 값을 가져오거나 설정합니다.

Entries

이벤트 로그의 내용을 가져옵니다.

Events

Component에 연결된 이벤트 처리기 목록을 가져옵니다.

(다음에서 상속됨 Component)
Log

읽거나 쓸 로그의 이름을 가져오거나 설정합니다.

LogDisplayName

이벤트 로그의 이름을 가져옵니다.

MachineName

이벤트를 읽거나 쓸 컴퓨터의 이름을 가져오거나 설정합니다.

MaximumKilobytes

최대 이벤트 로그 크기(킬로바이트)를 가져오거나 설정합니다.

MinimumRetentionDays

이 속성은 사용되지 않습니다.

OverflowAction

이벤트 로그가 최대 로그 파일 크기에 도달할 때 새 항목을 저장하기 위해 구성된 동작을 가져옵니다.

Site

ISite값을 Component 가져오거나 설정합니다.

(다음에서 상속됨 Component)
Source

이벤트 로그에 쓸 때 등록하고 사용할 원본 이름을 가져오거나 설정합니다.

SynchronizingObject

항목 작성 이벤트의 결과로 발급된 이벤트 처리기 호출을 마샬링하는 데 사용되는 개체를 EventLog 가져오거나 설정합니다.

메서드

Name Description
BeginInit()

폼에서 사용되거나 다른 구성 요소에서 사용되는 초기화를 EventLog 시작합니다. 초기화는 런타임에 발생합니다.

Clear()

이벤트 로그에서 모든 항목을 제거합니다.

Close()

이벤트 로그를 닫고 읽기 및 쓰기 핸들을 해제합니다.

CreateEventSource(EventSourceCreationData)

이벤트 원본 및 해당 이벤트 로그에 대해 지정된 구성 속성을 사용하여 지역화된 이벤트 메시지를 작성하기 위한 유효한 이벤트 원본을 설정합니다.

CreateEventSource(String, String, String)
사용되지 않음.
사용되지 않음.
사용되지 않음.

지정된 원본 이름을 지정된 컴퓨터의 로그에 항목을 쓰기 위한 유효한 이벤트 원본으로 설정합니다. 이 메서드를 사용하여 지정된 컴퓨터에 새 사용자 지정 로그를 만들 수도 있습니다.

CreateEventSource(String, String)

로컬 컴퓨터의 로그에 항목을 쓰기 위한 유효한 이벤트 원본으로 지정된 소스 이름을 설정합니다. 이 메서드는 로컬 컴퓨터에 새 사용자 지정 로그를 만들 수도 있습니다.

CreateObjRef(Type)

원격 개체와 통신하는 데 사용되는 프록시를 생성하는 데 필요한 모든 관련 정보를 포함하는 개체를 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
Delete(String, String)

지정된 컴퓨터에서 이벤트 로그를 제거합니다.

Delete(String)

로컬 컴퓨터에서 이벤트 로그를 제거합니다.

DeleteEventSource(String, String)

지정된 컴퓨터에서 애플리케이션의 이벤트 원본 등록을 제거합니다.

DeleteEventSource(String)

로컬 컴퓨터의 이벤트 로그에서 이벤트 원본 등록을 제거합니다.

Dispose()

에서 사용하는 모든 리소스를 Component해제합니다.

(다음에서 상속됨 Component)
Dispose(Boolean)

에서 사용하는 관리되지 않는 리소스를 EventLog해제하고 관리되는 리소스를 선택적으로 해제합니다.

EndInit()

폼 또는 다른 구성 요소에 사용되는 초기화를 EventLog 종료합니다. 초기화는 런타임에 발생합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
Exists(String, String)

로그가 지정된 컴퓨터에 있는지 여부를 확인합니다.

Exists(String)

로그가 로컬 컴퓨터에 있는지 여부를 확인합니다.

GetEventLogs()

로컬 컴퓨터에서 모든 이벤트 로그를 검색하고 목록을 포함하는 개체 배열 EventLog 을 만듭니다.

GetEventLogs(String)

지정된 컴퓨터에서 모든 이벤트 로그를 검색하고 목록을 포함하는 개체 배열 EventLog 을 만듭니다.

GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 현재 수명 서비스 개체를 검색합니다.

(다음에서 상속됨 MarshalByRefObject)
GetService(Type)

또는 해당 서비스에서 제공하는 서비스를 나타내는 개체를 Component 반환합니다 Container.

(다음에서 상속됨 Component)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
InitializeLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 수명 서비스 개체를 가져옵니다.

(다음에서 상속됨 MarshalByRefObject)
LogNameFromSourceName(String, String)

지정된 원본이 등록된 로그의 이름을 가져옵니다.

MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
MemberwiseClone(Boolean)

현재 MarshalByRefObject 개체의 단순 복사본을 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
ModifyOverflowPolicy(OverflowAction, Int32)

이벤트 로그가 최대 파일 크기에 도달하면 새 항목을 작성하기 위해 구성된 동작을 변경합니다.

RegisterDisplayName(String, Int64)

서버 이벤트 뷰어에 표시되는 이벤트 로그의 지역화된 이름을 지정합니다.

SourceExists(String, String)

이벤트 원본이 지정된 컴퓨터에 등록되어 있는지 여부를 확인합니다.

SourceExists(String)

이벤트 원본이 로컬 컴퓨터에 등록되어 있는지 여부를 확인합니다.

ToString()

String(있는 경우)의 Component이름을 포함하는 값을 반환합니다. 이 메서드는 재정의해서는 안 됩니다.

(다음에서 상속됨 Component)
WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[])

지정된 메시지 텍스트, 애플리케이션 정의 이벤트 식별자 및 애플리케이션 정의 범주가 포함된 항목을 이벤트 로그에 쓰고 메시지에 이진 데이터를 추가합니다.

WriteEntry(String, EventLogEntryType, Int32, Int16)

지정된 메시지 텍스트, 애플리케이션 정의 이벤트 식별자 및 애플리케이션 정의 범주가 포함된 항목을 이벤트 로그에 씁니다.

WriteEntry(String, EventLogEntryType, Int32)

지정된 메시지 텍스트와 애플리케이션 정의 이벤트 식별자가 있는 항목을 이벤트 로그에 씁니다.

WriteEntry(String, EventLogEntryType)

이벤트 로그에 지정된 메시지 텍스트와 함께 오류, 경고, 정보, 성공 감사 또는 실패 감사 항목을 씁니다.

WriteEntry(String, String, EventLogEntryType, Int32, Int16, Byte[])

지정된 메시지 텍스트, 애플리케이션 정의 이벤트 식별자 및 애플리케이션 정의 범주가 있는 항목을 이벤트 로그에 쓰고(지정된 등록된 이벤트 원본 사용) 메시지에 이진 데이터를 추가합니다.

WriteEntry(String, String, EventLogEntryType, Int32, Int16)

지정된 등록된 이벤트 원본을 사용하여 지정된 메시지 텍스트, 애플리케이션 정의 이벤트 식별자 및 애플리케이션 정의 범주가 있는 항목을 이벤트 로그에 씁니다. 이벤트 category 뷰어에서 로그의 이벤트를 필터링하는 데 사용할 수 있습니다.

WriteEntry(String, String, EventLogEntryType, Int32)

지정된 등록된 이벤트 원본을 사용하여 지정된 메시지 텍스트와 애플리케이션 정의 이벤트 식별자가 있는 항목을 이벤트 로그에 씁니다.

WriteEntry(String, String, EventLogEntryType)

지정된 등록된 이벤트 원본을 사용하여 지정된 메시지 텍스트가 포함된 오류, 경고, 정보, 성공 감사 또는 실패 감사 항목을 이벤트 로그에 씁니다.

WriteEntry(String, String)

지정된 등록된 이벤트 원본을 사용하여 지정된 메시지 텍스트가 포함된 정보 유형 항목을 이벤트 로그에 씁니다.

WriteEntry(String)

지정된 메시지 텍스트와 함께 정보 유형 항목을 이벤트 로그에 씁니다.

WriteEvent(EventInstance, Byte[], Object[])

지정된 이벤트 데이터, 메시지 대체 문자열 및 관련 이진 데이터를 사용하여 이벤트 로그 항목을 씁니다.

WriteEvent(EventInstance, Object[])

이벤트 로그에 지역화된 항목을 씁니다.

WriteEvent(String, EventInstance, Byte[], Object[])

지정된 이벤트 데이터, 메시지 대체 문자열 및 연결된 이진 데이터를 사용하여 지정된 등록된 이벤트 원본을 사용하여 이벤트 로그 항목을 씁니다.

WriteEvent(String, EventInstance, Object[])

지정된 등록된 이벤트 원본을 사용하여 지정된 이벤트 데이터 및 메시지 대체 문자열을 사용하여 이벤트 로그 항목을 씁니다.

이벤트

Name Description
Disposed

구성 요소가 메서드 호출에 Dispose() 의해 삭제될 때 발생합니다.

(다음에서 상속됨 Component)
EntryWritten

로컬 컴퓨터의 이벤트 로그에 항목을 쓸 때 발생합니다.

적용 대상

추가 정보