다음을 통해 공유


EventSourceCreationData.MessageResourceFile 속성

정의

원본에 대한 메시지 서식 문자열이 포함된 메시지 리소스 파일의 경로를 가져오거나 설정합니다.

public:
 property System::String ^ MessageResourceFile { System::String ^ get(); void set(System::String ^ value); };
public string MessageResourceFile { get; set; }
member this.MessageResourceFile : string with get, set
Public Property MessageResourceFile As String

속성 값

메시지 리소스 파일의 경로입니다. 기본값은 빈 문자열("")입니다.

예제

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

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
.

설명

속성을 MessageResourceFile 사용하여 지역화된 이벤트 메시지를 작성하도록 이벤트 로그 원본을 구성합니다. 이벤트 메시지는 사용자에게 이벤트를 설명하는 애플리케이션 정의 문자열입니다.

애플리케이션은 리소스 식별자를 사용하여 이벤트 로그 항목을 작성할 수 있습니다. 리소스 식별자는 에 있는 MessageResourceFile메시지를 인덱싱합니다. 이벤트 뷰어는 리소스 식별자를 사용하여 현재 언어 설정에 따라 지역화된 메시지 리소스 파일에서 해당 문자열을 찾아 표시합니다.

지역화된 항목을 작성하거나 직접 문자열을 작성하기 위해 이벤트 원본을 구성해야 합니다. 이 메서드를 WriteEvent 사용하여 메시지 리소스 파일로 구성된 원본에 대한 지역화된 항목을 작성합니다.

애플리케이션이 지역화된 리소스 파일에서 리소스 식별자를 사용하는 대신 이벤트 메시지 문자열을 직접 작성하는 경우 속성을 설정 MessageResourceFile 하지 마세요.

이벤트 메시지를 정의하고 이벤트 리소스 파일을 빌드하는 방법에 대한 자세한 내용은 플랫폼 SDK 설명서의 메시지 컴파일러 문서를 참조하세요.

적용 대상

추가 정보