簡體   English   中英

Windows窗體事件日志

[英]Windows Forms Event Log

我從Windows 7上運行的Windows窗體應用程序寫入事件日志,並在事件日志中收到此消息:

無法找到源應用程序中的事件ID X的描述。 引發此事件的組件未安裝在本地計算機上,或者安裝已損壞。 您可以在本地計算機上安裝或修復該組件。

如果事件源自另一台計算機,則必須隨事件一起保存顯示信息。

活動中包含以下信息:

例外細節

消息資源存在但在字符串/消息表中找不到該消息

我的日志代碼是:

public void Log(Exception exc)
{
    EventLog.WriteEntry(
        "Application", 
        exc.ToString(), 
        EventLogEntryType.Error, 
        100);
}

我在Windows窗體上的日志記錄通常是數據庫,但在這種情況下決定使用事件日志。 我通常在ASP.NET應用程序中使用事件日志,但這些是在本地XP Pro和Web服務器上的Windows Server 2003上。

這是Windows 7的東西還是Windows Forms的東西,我該怎么做才能解決這個問題? 謝謝。

請參閱http://support.microsoft.com/kb/307024 ,具體而言,請不要忘記創建事件源。

這個解決方案對我有用:

在Windows 7或Win 2008 R2的注冊表中,此鍵下的鍵HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ services \\ eventlog \\ CustomEventLog是該事件日志的所有已注冊有效源。

當您嘗試使用非有效的源(不是HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ services \\ eventlog \\ CustomEventLog下的鍵)寫入事件日志時,它會枚舉其他事件日志鍵以查看是否存在源那里。

我在HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ services \\ eventlog \\ CustomEventLog鍵下添加了所有缺少的源。 只需在此密鑰下創建現有密鑰的副本,並將其重命名為EventSource。

此重載中的第一個參數是“應用程序在指定計算機上注冊的源”。 此處記錄如果此源是“應用程序”,則會出現此行為。 (可能是你錯誤地認為第一個參數是指Windows日志:應用程序,安全性等?)

注冊您的來源做到這一點:

public void Log(Exception exc){
    if(!EventLog.SourceExists("MySource"))
    {
        EventLog.CreateEventSource("MySource", "MyNewLog");
        return ;
    }
    EventLog.WriteEntry(
     "MySource", 
     exc.ToString(), 
     EventLogEntryType.Error, 
     100); }  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM