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