【问题标题】:Windows EventLog - Event ID 0Windows 事件日志 - 事件 ID 0
【发布时间】:2013-05-10 04:23:13
【问题描述】:

我有一个使用 EventLog 进行日志记录的 Windows 服务应用程序。在我运行的应用安装程序中:

eventcreate /L APPLICATION /SO "My App" /T SUCCESS /id 1 /D "Initialised Log"

然后在我的 C# 应用程序记录器中:

EventLog.WriteEntry(message, EventLogEntryType.Error, 1, 0, details);

但是,当我查看应用程序事件日志时,除了我的事件之外,我还看到 EventID 为 0 的条目。我无法使用 eventcreate 创建 ID=0 的条目(即 ID 必须 >=1)。那么是什么创造了这些事件呢?有什么方法可以阻止 eventlog 抱怨安装损坏?

一个示例条目说:

活动中包含以下信息:

服务启动成功。

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

【问题讨论】:

    标签: windows event-log


    【解决方案1】:

    你收到文字了吗:

    找不到来自源 myApp 的事件 ID 0 的描述。引发此事件的组件未安装在本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复组件。

    在所有事件日志条目的前面,跟着正确的错误?

    我在使用 eventcreate 后遇到了这种情况,只能通过编辑注册表来摆脱

    HKLM\System\CurrentControlSet\Services\Eventlog\Application\MyEventSource
    
    customSource (1)
    EventMessageFile %SystemRoot%\System32\EventCreate.exe
    TypesSupported (7)
    

    我把它改成了

    EventMessageFile C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll
    

    然后我所有的事件日志条目(甚至是旧的)看起来都是正确的,没有抱怨损坏

    【讨论】:

      【解决方案2】:

      ServiceBase 类有一个属性 AutoLog,默认为 true。这意味着它将自动报告状态变化,如开始、停止、暂停和继续。 MSDN documentation is here.

      如果您想将信息报告到自定义日志而不是应用程序日志,或者如果您想禁止这些事件日志条目,您应该将 AutoLog 设置为 false 在你的构造函数中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-27
        • 2016-02-04
        • 2010-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多