EventInstance.CategoryId 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置指定事件项的应用程序定义类别的资源标识符。
public:
property int CategoryId { int get(); void set(int value); };
public int CategoryId { get; set; }
member this.CategoryId : int with get, set
Public Property CategoryId As Integer
属性值
数字型类别值或资源标识符,与事件源的类别资源文件中定义的字符串对应。 默认值为零,这意味着将不会为该事件项显示类别。
例外
属性设置为负值或大于 UInt16.MaxValue 的值。
示例
下面的代码示例编写一个信息性事件条目,然后重用 EventInstance 将警告事件的条目写入现有事件日志。 事件消息文本是使用消息资源文件中的资源标识符指定的。 该代码示例假定已为源注册相应的消息资源文件。
// Ensure that the source has already been registered using
// EventLogInstaller or EventLog.CreateEventSource.
String^ sourceName = "SampleApplicationSource";
if ( EventLog::SourceExists( sourceName ) )
{
// Define an informational event with no category.
// The message identifier corresponds to the message text in the
// message resource file defined for the source.
EventInstance ^ myEvent = gcnew EventInstance( UpdateCycleCompleteMsgId,0 );
// Write the event to the event log using the registered source.
EventLog::WriteEvent( sourceName, myEvent, 0 );
// Reuse the event data instance for another event entry.
// Set the entry category and message identifiers for
// the appropriate resource identifiers in the resource files
// for the registered source. Set the event type to Warning.
myEvent->CategoryId = RefreshCategoryMsgId;
myEvent->EntryType = EventLogEntryType::Warning;
myEvent->InstanceId = ServerConnectionDownMsgId;
// Write the event to the event log using the registered source.
// Insert the machine name into the event message text.
array<String^>^ss = {Environment::MachineName};
EventLog::WriteEvent( sourceName, myEvent, ss );
}
else
{
Console::WriteLine( "Warning - event source {0} not registered", sourceName );
}
// Ensure that the source has already been registered using
// EventLogInstaller or EventLog.CreateEventSource.
string sourceName = "SampleApplicationSource";
if(EventLog.SourceExists(sourceName))
{
// Define an informational event with no category.
// The message identifier corresponds to the message text in the
// message resource file defined for the source.
EventInstance myEvent = new EventInstance(UpdateCycleCompleteMsgId, 0);
// Write the event to the event log using the registered source.
EventLog.WriteEvent(sourceName, myEvent);
// Reuse the event data instance for another event entry.
// Set the entry category and message identifiers for
// the appropriate resource identifiers in the resource files
// for the registered source. Set the event type to Warning.
myEvent.CategoryId = RefreshCategoryMsgId;
myEvent.EntryType = EventLogEntryType.Warning;
myEvent.InstanceId = ServerConnectionDownMsgId;
// Write the event to the event log using the registered source.
// Insert the machine name into the event message text.
EventLog.WriteEvent(sourceName, myEvent, Environment.MachineName);
}
else
{
Console.WriteLine("Warning - event source {0} not registered",
sourceName);
}
' Ensure that the source has already been registered using
' EventLogInstaller or EventLog.CreateEventSource.
Dim sourceName as String = "SampleApplicationSource"
If EventLog.SourceExists(sourceName)
' Define an informational event with no category.
' The message identifier corresponds to the message text in the
' message resource file defined for the source.
Dim myEvent As EventInstance = New EventInstance(UpdateCycleCompleteMsgId, 0)
' Write the event to the event log using the registered source.
EventLog.WriteEvent(sourceName, myEvent)
' Reuse the event data instance for another event entry.
' Set the entry category and message identifiers for
' the appropriate resource identifiers in the resource files
' for the registered source. Set the event type to Warning.
myEvent.CategoryId = RefreshCategoryMsgId
myEvent.EntryType = EventLogEntryType.Warning
myEvent.InstanceId = ServerConnectionDownMsgId
' Write the event to the event log using the registered source.
' Insert the machine name into the event message text.
EventLog.WriteEvent(sourceName, myEvent, Environment.MachineName)
Else
Console.WriteLine("Warning - event source {0} not registered", _
sourceName)
End If
该代码示例使用以下消息文本文件,该文件内置于资源库中 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
.
注解
事件日志类别是应用程序定义的值,可帮助筛选事件或提供有关事件的详细信息。 例如,应用程序可以为不同的组件或不同的操作定义单独的类别。
CategoryId设置 属性以指定事件查看器为条目显示的类别。 事件查看器可以将类别显示为数值,也可以使用 CategoryId 作为资源标识符来显示基于当前语言设置的本地化类别字符串。
若要在事件查看器中显示本地化类别字符串,必须使用配置了类别资源文件的事件源,并将 设置为CategoryId类别资源文件中的资源标识符。 如果事件源没有配置的类别资源文件,或者指定的 CategoryId 没有为类别资源文件中的字符串编制索引,则事件查看器显示该条目的数字类别值。
在使用资源标识符编写事件类别之前,必须将源注册到相应的资源文件。 使用 EventLogInstaller 或 EventSourceCreationData 类配置类别资源文件以及资源文件中的类别字符串数。 在资源文件中定义类别字符串时,类别资源标识符必须从 1 开始连续编号,最大为配置的 CategoryCount 属性值。
事件类别是可选的。 如果应用程序不使用类别,请不要为事件日志条目设置 CategoryId 。
有关定义事件消息和生成事件资源文件的详细信息,请参阅平台 SDK 文档中 的消息编译器 一文。 有关在资源文件中定义事件类别的详细信息,请参阅平台 SDK 中的“事件类别”主题