代码之家  ›  专栏  ›  技术社区  ›  blu

Windows窗体事件日志

  •  3
  • blu  · 技术社区  · 15 年前

    在事件日志中 :

    找不到源应用程序中事件ID X的说明。引发此事件的组件未安装在本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复该组件。

    如果事件源于另一台计算机,则显示信息必须与事件一起保存。

    异常详细信息

    消息资源存在,但在字符串/消息表中找不到该消息

    我的日志代码是:

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

    我在Windows窗体上的登录通常是一个DB,但在这种情况下,我决定使用事件日志。我通常在ASP.NET应用程序中使用事件日志,但这些应用程序在XP Pro本地和Windows Server 2003的web框中。

    这是Windows7还是WindowsForms,我应该怎么做才能解决这个问题?谢谢。

    3 回复  |  直到 4 年前
        1
  •  2
  •   Chris O    15 年前

    看到了吗 http://support.microsoft.com/kb/307024 ,尤其是不要忘记创建事件源。

        2
  •  0
  •   esjr    15 年前

    此重载中的第一个参数是“在指定计算机上注册应用程序的源” documented here 如果这个源是,就像你的例子中的“应用程序”,你就会得到这个行为(您是否会误认为第一个参数是指Windows日志:应用程序、安全性等?)

    public void Log(Exception exc){
        if(!EventLog.SourceExists("MySource"))
        {
            EventLog.CreateEventSource("MySource", "MyNewLog");
            return ;
        }
        EventLog.WriteEntry(
         "MySource", 
         exc.ToString(), 
         EventLogEntryType.Error, 
         100); }  
    
        3
  •  0
  •   Ludwo    13 年前

    在windows 7或Win 2008 R2的注册表中,有一个注册表项HKEY\ U LOCAL\ U MACHINE\SYSTEM\CurrentControlSet\services\eventlog\CustomEventLog,该注册表项下的所有注册表项都是该事件日志的有效源。

    当您尝试使用无效的源(不是HKEY\ U LOCAL\ U MACHINE\SYSTEM\CurrentControlSet\services\eventlog\CustomEventLog下的密钥)写入事件日志时,它会枚举其他事件日志密钥,以查看是否存在源。

    我在HKEY\ U LOCAL\ U MACHINE\SYSTEM\CurrentControlSet\services\eventlog\CustomEventLog项下添加了所有丢失的源代码。 只需在此键下创建现有键的副本,并将其重命名为EventSource。