EventLog.WriteEntry和EventLog.WriteEvent方法之间的区别

时间:2010-08-30 11:04:46

标签: .net .net-2.0

我尝试使用WriteEntry类的WriteEventEventLog方法。

EventLog.WriteEntry("Saravanan", "Application logs an entry", 
                     EventLogEntryType.Information, 2, 3);
EventLog.WriteEvent("Saravanan",  new EventInstance(2, 3), 
                                 "Application logs an event");

两者都输出相同的结果。

这些方法的用法有什么不同吗?

如果只有轻微差异,为什么不通过WriteEvent()WriteEntry()方法的重载来完成,而不是引入新方法?

1 个答案:

答案 0 :(得分:45)

EventLog.WriteEntry是一种“快速而肮脏”的方式,可以写入事件日志,您可以在其中编写字符串。 EventLog.WriteEvent使您可以充分利用本机Win32 API。但是,为此,您应该创建一个本地化的消息文件,然后使用message compiler (mc.exe)进行编译。每个事件都可以包含替换字符串,并且可以进行本地化以匹配计算机上的区域设置。

为了避免创建消息文件的额外步骤,事件日志API的.Net包装器使用简单地插入作为参数提供的字符串的消息。这些消息由EventLog.WriteEntry使用,并作为嵌入资源存储在。EventLogMessages.dll中的.Net文件夹中。

通常使用EventLog.WriteEntry就足够了,但如果您需要本地化您的邮件或想要将其保留在源代码之外,则应创建一个邮件文件并使用EventLog.WriteEvent