2010-08-30 150 views
33

我試過使用WriteEntryWriteEvent方法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()方法的超載來完成,而不是引入新方法?

回答

40

EventLog.WriteEntry是寫入事件日誌的「快速和骯髒」方式,您可以在其中編寫字符串。 EventLog.WriteEvent使您能夠充分利用本機Win32 API。但是,要做到這一點,您應該創建一個本地化的消息文件,然後使用message compiler (mc.exe)進行編譯。每個事件都可以包含替換字符串,並可以進行本地化以匹配計算機上的區域設置。

爲了避免創建消息文件的額外步驟,事件日誌API的.Net包裝器使用簡單地插入作爲參數提供的字符串的消息。這些消息由EventLog.WriteEntry使用,並作爲嵌入資源存儲在.Net文件夾中的EventLogMessages.dll中。

通常使用EventLog.WriteEntry已經足夠,但如果您需要本地化您的消息或希望將它們保留在源代碼之外,您應該創建一個消息文件並使用EventLog.WriteEvent

相關問題