[英]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.