2012-05-06 52 views
6

正如我們所知,我們可以使用類EventLog來編寫事件日誌,但我對如何在事件日誌中編寫類別名稱感到困惑。 Thoug它提供的類參數,例如,WriteEntry的類型之一是:如何編寫事件日誌類別

public void WriteEntry(
string message, 
EventLogEntryType type, 
int eventID, 
short category 


它只是顯示在我的日誌數量。爲什麼類別的類型很短,而不是字符串?如何在事件查看器中顯示類別名稱?謝謝!順便說一下,我們不會創建自定義的CategoryMessageFile。

回答

5

你可以寫一個給定類別的事件日誌條目,但你需要創建與在事件日誌中註冊一個字符串資源表中的額外的本地DLL。這確實使你的部署變得複雜。 您目前必須在安裝過程中執行

  1. 要創建新的事件日誌源,每次創建新源時都需要擁有管理權限。因此,收集所有資源是很明智的,因此您可以在初始安裝期間一次安裝。
  2. 創建一個本機dll,其中包含您想要提供的每個類別id的字符串資源表。
  3. 在註冊表中註冊類別dll使Windows知道它。

現在,您可以使用重載來編寫具有給定類別的事件日誌消息。

有一個非常好的Dr. Jobs Journal article描述你的問題。

+0

是的,我找到了這篇文章,我知道我們可以創建一個額外的本地dll,但在我們的開發中不推薦。所以,我想知道我是否可以使用默認系統類別名稱? –

+0

你的意思是不推薦?這是唯一的方法。如果您從Windows重用類別DLL,您仍需要註冊它們以查找事件源。每個事件源只能使用一個類別文件。您現在正在爲要使用的每個新類別dll設計事件源。我懷疑描述性名稱會像Source1,Source2,Source3那樣僅用於重用3個不同的類別文件,這些類別文件包含您無法控制的消息。 –

-1

你有這麼多的重載 - 能滿足你:(你爲什麼選擇複雜的問題:)?)

分類是過濾的事件事件日誌(你可以用源attribtue也做)

enter image description here

使用第一或第二個。

編輯

EventLog.CreateEventSource("MyWebApplication", "Application") ; 
+0

你是寫,但是寫類是在我們的情況設計要求。 –

+1

這不回答「如何將類別寫入事件日誌」的問題。 – Despertar

+0

@Despertar你是對的。更新。 –