我正在寻找一种不使用Message Files的方式,因为我不想要mess。是否可以在代码中为Windows事件日志指定事件类别?
我希望能够写使用类似的方法事件
public void WriteEvent(EventLogEntryType type, string description, int eventId, int categoryId)
,并指定这些类别在同一类注册我的EventSource,在一些枚举。
谢谢!
我正在寻找一种不使用Message Files的方式,因为我不想要mess。是否可以在代码中为Windows事件日志指定事件类别?
我希望能够写使用类似的方法事件
public void WriteEvent(EventLogEntryType type, string description, int eventId, int categoryId)
,并指定这些类别在同一类注册我的EventSource,在一些枚举。
谢谢!
不幸的是,这是不可能的。
甚至认为事情已经在API方面发生了一些变化,因为我提到的博客文章,但原则保持不变。 参见文档+样品:
https://msdn.microsoft.com/en-us/library/650k61tw(v=vs.100).aspx
https://msdn.microsoft.com/en-us/library/system.diagnostics.eventinstance.categoryid(v=vs.100).aspx
我找到可接受的解决方法本;使用不同的源ID,而不是categoryId。它更简单,可以用简单的API完成。
示例: 自行管理事件源,为每个类别类型创建事件源。通过运行
if (!EventLog.SourceExists(sourceName))
{
lock (_eventSourceCreationLock)
{
if (!EventLog.SourceExists(sourceName))
{
EventLog.CreateEventSource(sourceName, _logName);
}
}
}
,然后使用一些懒惰的创作逻辑,例如,用这个来写每源每个日志条目:
EventLog.WriteEntry(sourceName, description, type, id);
这些样品都是线程安全的同时,为静态调用创建新的内部事件日志。
EventLog的实例方法不保证是线程安全的。