EventLog.WriteEntry和EventLog.WriteEvent方法之间的区别
问题描述:
我试过使用WriteEntry
和WriteEvent
方法EventLog
类。EventLog.WriteEntry和EventLog.WriteEvent方法之间的区别
EventLog.WriteEntry("Saravanan", "Application logs an entry",
EventLogEntryType.Information, 2, 3);
EventLog.WriteEvent("Saravanan", new EventInstance(2, 3),
"Application logs an event");
两者都输出相同的结果。
这些方法的用法有什么不同吗?
如果只有很小的差异,为什么没有通过WriteEvent()
或WriteEntry()
方法的超载来完成,而不是引入新方法?
答
EventLog.WriteEntry
是写入事件日志的“快速和肮脏”方式,您可以在其中编写字符串。 EventLog.WriteEvent
使您能够充分利用本机Win32 API。但是,要做到这一点,您应该创建一个本地化的消息文件,然后使用message compiler (mc.exe)进行编译。每个事件都可以包含替换字符串,并可以进行本地化以匹配计算机上的区域设置。
为了避免创建消息文件的额外步骤,事件日志API的.Net包装器使用简单地插入作为参数提供的字符串的消息。这些消息由EventLog.WriteEntry
使用,并作为嵌入资源存储在.Net文件夹中的EventLogMessages.dll
中。
通常使用EventLog.WriteEntry
已经足够,但如果您需要本地化您的消息或希望将它们保留在源代码之外,您应该创建一个消息文件并使用EventLog.WriteEvent
。