EventSourceCreationData(String, String) 생성자

정의

지정된 이벤트 원본 및 이벤트 로그 이름을 사용하여 클래스의 EventSourceCreationData 새 인스턴스를 초기화합니다.

public:
 EventSourceCreationData(System::String ^ source, System::String ^ logName);
public EventSourceCreationData(string? source, string logName);
public EventSourceCreationData(string source, string logName);
new System.Diagnostics.EventSourceCreationData : string * string -> System.Diagnostics.EventSourceCreationData
Public Sub New (source As String, logName As String)

매개 변수

source
String

이벤트 로그에 항목의 원본으로 등록할 이름입니다.

logName
String

원본의 항목이 기록되는 로그의 이름입니다.

예제

다음 코드 예제에서는 이름이 지정된 SampleApplicationSource 이벤트 원본이 로컬 컴퓨터에 등록되어 있는지 여부를 결정합니다. 이벤트 원본이 없으면 원본에 대한 메시지 리소스 파일을 설정하고 새 이벤트 원본을 만드는 예제입니다. 마지막으로 코드 예제에서는 리소스 식별자 값 및 리소스 파일 경로를 DisplayNameMsgId사용하여 이벤트 로그의 messageFile 지역화된 표시 이름을 설정합니다.

static void CreateEventSourceSample1(string messageFile)
{
    string myLogName;
    string sourceName = "SampleApplicationSource";

    // Create the event source if it does not exist.
    if(!EventLog.SourceExists(sourceName))
    {
        // Create a new event source for the custom event log
        // named "myNewLog."

        myLogName = "myNewLog";
        EventSourceCreationData mySourceData = new EventSourceCreationData(sourceName, myLogName);

        // Set the message resource file that the event source references.
        // All event resource identifiers correspond to text in this file.
        if (!System.IO.File.Exists(messageFile))
        {
            Console.WriteLine("Input message resource file does not exist - {0}",
                messageFile);
            messageFile = "";
        }
        else
        {
            // Set the specified file as the resource
            // file for message text, category text, and
            // message parameter strings.

            mySourceData.MessageResourceFile = messageFile;
            mySourceData.CategoryResourceFile = messageFile;
            mySourceData.CategoryCount = CategoryCount;
            mySourceData.ParameterResourceFile = messageFile;

            Console.WriteLine("Event source message resource file set to {0}",
                messageFile);
        }

        Console.WriteLine("Registering new source for event log.");
        EventLog.CreateEventSource(mySourceData);
    }
    else
    {
        // Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".");
    }

    // Register the localized name of the event log.
    // For example, the actual name of the event log is "myNewLog," but
    // the event log name displayed in the Event Viewer might be
    // "Sample Application Log" or some other application-specific
    // text.
    EventLog myEventLog = new EventLog(myLogName, ".", sourceName);

    if (messageFile.Length > 0)
    {
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId);
    }
}
Public Shared Sub CreateEventSourceSample1(ByVal messageFile As String)

    Dim myLogName As String
    Dim sourceName As String = "SampleApplicationSource"

    ' Create the event source if it does not exist.
    If Not EventLog.SourceExists(sourceName)
    
        ' Create a new event source for the custom event log
        ' named "myNewLog."  

        myLogName = "myNewLog"
        Dim mySourceData As EventSourceCreationData = New EventSourceCreationData(sourceName, myLogName)

        ' Set the message resource file that the event source references.
        ' All event resource identifiers correspond to text in this file.
        If Not System.IO.File.Exists(messageFile)

            Console.WriteLine("Input message resource file does not exist - {0}", _
                messageFile)
            messageFile = ""
        Else 
            ' Set the specified file as the resource
            ' file for message text, category text and 
            ' message parameters strings.

            mySourceData.MessageResourceFile = messageFile
            mySourceData.CategoryResourceFile = messageFile
            mySourceData.CategoryCount = CategoryCount
            mySourceData.ParameterResourceFile = messageFile

            Console.WriteLine("Event source message resource file set to {0}", _
                messageFile)
        End If

        Console.WriteLine("Registering new source for event log.")
        EventLog.CreateEventSource(mySourceData)
    Else
        ' Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".")
    End If

    ' Register the localized name of the event log.
    ' For example, the actual name of the event log is "myNewLog," but
    ' the event log name displayed in the Event Viewer might be
    ' "Sample Application Log" or some other application-specific
    ' text.
    Dim myEventLog As EventLog = New EventLog(myLogName, ".", sourceName)
    
    If messageFile.Length > 0
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId)
    End If
End Sub

코드 예제에서는 리소스 라이브러리 EventLogMsgs.dll기본 제공된 다음 메시지 텍스트 파일을 사용합니다. 메시지 텍스트 파일은 메시지 리소스 파일이 만들어지는 원본입니다. 메시지 텍스트 파일은 범주, 이벤트 메시지 및 매개 변수 삽입 문자열에 대한 리소스 식별자 및 텍스트를 정의합니다.

; // EventLogMsgs.mc
; // ********************************************************

; // Use the following commands to build this file:

; //   mc -s EventLogMsgs.mc
; //   rc EventLogMsgs.rc
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res
; // ********************************************************

; // - Event categories -
; // Categories must be numbered consecutively starting at 1.
; // ********************************************************

MessageId=0x1
Severity=Success
SymbolicName=INSTALL_CATEGORY
Language=English
Installation
.

MessageId=0x2
Severity=Success
SymbolicName=QUERY_CATEGORY
Language=English
Database Query
.

MessageId=0x3
Severity=Success
SymbolicName=REFRESH_CATEGORY
Language=English
Data Refresh
.

; // - Event messages -
; // *********************************

MessageId = 1000
Severity = Success
Facility = Application
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000
Language=English
My application message text, in English, for message id 1000, called from %1.
.

MessageId = 1001
Severity = Warning
Facility = Application
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001
Language=English
My application message text, in English, for message id 1001, called from %1.
.

MessageId = 1002
Severity = Success
Facility = Application
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002
Language=English
My generic information message in English, for message id 1002.
.

MessageId = 1003
Severity = Warning
Facility = Application
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003
Language=English
My generic warning message in English, for message id 1003, called from %1.
.

MessageId = 1004
Severity = Success
Facility = Application
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004
Language=English
The update cycle is complete for %%5002.
.

MessageId = 1005
Severity = Warning
Facility = Application
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005
Language=English
The refresh operation did not complete because the connection to server %1 could not be established.
.

; // - Event log display name -
; // ********************************************************

MessageId = 5001
Severity = Success
Facility = Application
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID
Language=English
Sample Event Log
.

; // - Event message parameters -
; //   Language independent insertion strings
; // ********************************************************

MessageId = 5002
Severity = Success
Facility = Application
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID
Language=English
SVC_UPDATE.EXE
.

설명

이벤트 로그에 항목을 쓰려면 먼저 이벤트 로그에 대한 이벤트 원본을 만들어야 합니다. 새 원본을 등록하려면 인스턴스를 EventSourceCreationData 초기화하고, 애플리케이션에 대한 인스턴스 속성을 구성하고, 메서드를 호출합니다 EventLog.CreateEventSource(EventSourceCreationData) . 원본이 등록되면 원본에서 또는 WriteEvent 메서드를 사용하여 항목을 작성할 WriteEntry 수 있습니다.

이벤트 범주 및 메시지 문자열에 대한 지역화된 리소스에 이벤트 원본을 등록할 수 있습니다. 애플리케이션은 실제 문자열을 지정하는 대신 리소스 식별자를 사용하여 이벤트 로그 항목을 작성할 수 있습니다. 이벤트 뷰어는 리소스 식별자를 사용하여 현재 언어 설정에 따라 지역화된 리소스 파일에서 해당 문자열을 찾아 표시합니다. 이벤트 범주, 메시지 및 매개 변수 삽입 문자열에 대해 별도의 파일을 등록하거나 세 가지 문자열 유형 모두에 대해 동일한 리소스 파일을 등록할 수 있습니다. CategoryCount, CategoryResourceFileMessageResourceFileParameterResourceFile 속성을 사용하여 지역화된 항목을 이벤트 로그에 쓰도록 원본을 구성합니다. 애플리케이션이 이벤트 로그에 직접 문자열 값을 쓰는 경우 이러한 속성을 설정할 필요가 없습니다.

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

다음 표에서는 에 대한 EventSourceCreationData초기 속성 값을 보여줍니다.

재산 초기 값
Source 매개 변수입니다 source .
LogName 매개 변수입니다 logName .
MachineName 로컬 컴퓨터(".")입니다.
CategoryCount 0(Zero)
CategoryResourceFile null(Nothing Visual Basic).
MessageResourceFile null(Nothing Visual Basic).
ParameterResourceFile null(Nothing Visual Basic).

적용 대상

추가 정보