2012-09-11 38 views
1

不能重新註冊事件源我創建使用事件日誌中源新的自定義事件日誌

if (!EventLog.SourceExists(EventLogSource)) EventLog.CreateEventSource(EventLogSource); 

所以使用EventLogSource每個日誌條目進入「應用程序」。然後我希望那些使用EventLogSource的條目進入另一個自定義日誌;所以我刪除了他們,然後創建源與新的自定義日誌:

try { EventLog.DeleteEventSource(EventLogSource); } 
catch { } 
try { EventLog.Delete(EventLogName); } 
catch { } 

... 
if (!EventLog.SourceExists(EventLogSource)) EventLog.CreateEventSource(EventLogSource, EventLogName); 
while (!EventLog.SourceExists(EventLogSource)) { } 

,但是當我登錄使用EventLogSource的條目仍正在進入代替的EventLogName「應用程序」。

注:

我在評論中寫道這一點,我認爲它有助於說明我的問題更好: 在Windows事件查看器中看到「Windows日誌」和「應用」是根據該。在名爲「應用程序和服務日誌」的樹中還有另一個節點,我想在其中創建自定義日誌。我可以成功地做到這一點。問題是,之前註冊到「應用程序」的事件源不能從「應用程序」註銷並重新註冊在我自己的「MyCustomLog」中。

+0

沒有建設性和明確的要求。它非常混亂很多。你能否提供更多細節? – VIRA

+0

在Windows事件查看器中,您會看到「Windows日誌」和「應用程序」。在名爲「應用程序和服務日誌」的樹中還有另一個節點,我想在其中創建自定義日誌。我可以成功地做到這一點。問題是,之前註冊到「應用程序」的事件源不能從「應用程序」註銷並重新註冊在我自己的「MyCustomLog」中。 –

+1

如果我沒有記錯的話,Windows中的事件系統會緩存一些關於源的信息,並且您確實需要刪除源,重新引導,然後重新創建源以使其運行。 –

回答

4

Windows中的事件系統緩存一些關於源的信息。這意味着,如果您刪除源並重新添加源,它將繼續被記錄到最初使用的相同日誌中。

沒有書面的方式強制事件系統清除此緩存。我知道的唯一方法是重新啓動機器 - 因此您需要刪除源文件,重新引導,然後重新創建源文件。

+0

感謝您提出重新啓動機器的建議 - 這正是解決了類似問題的原因。 –

+0

我已經upvoted這個答案,因爲它是正確的,但我不喜歡它:(重新啓動機器不是我的選擇 –

相關問題