我們的應用程序中存在一些非致命錯誤和應用程序恢復的情況。寫入應用程序事件源是否可以接受?
當將所述項目填充到選擇列表時,無法正確識別某些可導入項目的示例。這些錯誤不會導致應用程序崩潰,但會提醒用戶某些項目未能加載。
在這種情況下,該錯誤將作爲警告記錄到應用程序事件日誌中。這是應用程序從中恢復的非致命錯誤,但如果需要,記錄到事件日誌允許我們查看原始錯誤。
我們的問題是軟件需要能夠與高級用戶帳戶一起安裝。不是管理員帳戶,我們無法爲應用程序創建自定義事件源。
其目的是將錯誤寫入「應用程序」事件源(它已存在於應用程序事件日誌中)。但是,這樣做會導致類似於以下內容的文字也被包括在內。
找不到源應用程序中事件ID 0的說明。引發此事件的組件未安裝在本地計算機上或安裝已損壞。您可以在本地計算機上安裝或修復組件。
這是因爲我們編寫它時EventID爲0。這種方法將完成工作,但是有沒有更好的方法?是否有一種非管理方式來指定應用程序事件源的EventID以表明它來自我們的應用程序?
我已經做了一些閱讀:事件ID與事件源組合確定發生什麼樣的事件。 總之:我不介意警告錯誤,但我不應該使用我沒有創建的源。我無法創建一個(非管理員安裝等),所以我希望找到可用於這些事件的事件源,或者使用不同的機制進行日誌記錄。思考? – MoSlo
如果您使用.NET 4.5,則可以使用EventSource類(http://msdn.microsoft.com/en-us/library/system.diagnostics.tracing.eventsource.aspx)將事件寫入ETW,而無需註冊。缺點是事件不會保存在事件日誌中,所以如果你不積極地聽這些事件,你將不會得到它們。 – fsimonazzi