EventSourceCreationData(String, String) 建構函式
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
會利用指定的事件來源和事件記錄檔名稱,初始化 EventSourceCreationData 類別的新執行個體。
public:
EventSourceCreationData(System::String ^ source, System::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
資源檔案路徑,設定事件記錄檔的當地語系化顯示名稱。
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 = gcnew 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 = gcnew EventLog( myLogName,".",sourceName );
if ( messageFile->Length > 0 )
{
myEventLog->RegisterDisplayName( 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
.
備註
若要將專案寫入事件記錄檔,您必須先建立事件記錄檔的事件來源。 若要註冊新的來源,請初始化 EventSourceCreationData 實例、設定應用程式的實例屬性,以及呼叫 EventLog.CreateEventSource(EventSourceCreationData) 方法。 註冊來源之後,您可以使用 或 WriteEntry 方法,從來源WriteEvent寫入專案。
您可以使用事件類別目錄和訊息字串的當地語系化資源來註冊事件來源。 您的應用程式可以使用資源識別碼來寫入事件記錄專案,而不是指定實際的字串。 事件檢視器 會使用資源標識符,根據目前的語言設定,從本地化的資源文件尋找並顯示對應的字串。 您可以為事件類別、訊息和參數插入字串註冊個別的檔案,也可以為所有三種類型的字串註冊相同的資源檔。 CategoryCount使用、CategoryResourceFile、 MessageResourceFile和 ParameterResourceFile 屬性來設定來源,將當地語系化專案寫入事件記錄檔。 如果您的應用程式將字串值直接寫入事件記錄檔,則不需要設定這些屬性。
來源必須設定為撰寫本地化專案,或撰寫直接字串。 如果您的應用程式同時使用資源識別碼和字串值來寫入專案,您必須註冊兩個不同的來源。 例如,使用資源文件設定一個來源,然後在方法中使用 WriteEvent 該來源,使用資源標識符將專案寫入事件記錄檔。 然後,在沒有資源文件的情況下建立不同的來源,並在方法中使用 WriteEntry 該來源,直接將字串寫入事件記錄檔。
下表顯示 的初始屬性值 EventSourceCreationData。
屬性 | 初始值 |
---|---|
Source | source 參數。 |
LogName | logName 參數。 |
MachineName | 本機計算機 (“。”) 。 |
CategoryCount | 零 |
CategoryResourceFile | null (在 Visual Basic 中為 Nothing )。 |
MessageResourceFile | null (在 Visual Basic 中為 Nothing )。 |
ParameterResourceFile | null (在 Visual Basic 中為 Nothing )。 |