简体   繁体   English

事件日志写入错误

[英]Event log write error

It is simple, I want to write something to event log. 这很简单,我想写一些事情日志。

protected override void OnStop()
    {
        // TODO: Add code here to perform any tear-down necessary to stop your service.
        if (!System.Diagnostics.EventLog.SourceExists("IvrService"))
        {
            System.Diagnostics.EventLog.CreateEventSource(
                "IvrService", "IvrServiceLog");
        }
        EventLog eventLog1 = new System.Diagnostics.EventLog();
        eventLog1.Source = "IvrService";
        eventLog1.Log = "IvrServiceLog";
        try
        {
            eventLog1.WriteEntry("Successfully "+State.Stopped.ToString());
            IvrApplication.StopImmediate();
        }
        catch (Exception ex)
        {
           // eventLog1.WriteEntry(ex.Message);
        }
    }

The exception is: 例外是:

   Failed to stop service. System.ArgumentException: The source 'IvrService' is not   registered in log 'IvrServiceLog'. (It is registered in log 'Application'.) " The Source   and Log properties must be matched, or you may set Log to the empty string, and it will automatically be matched to the Source property.
   at System.Diagnostics.EventLogInternal.VerifyAndCreateSource(String sourceName, String currentMachineName)
   at System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
   at System.Diagnostics.EventLog.WriteEntry(String message)

The error message is telling you exactly what is wrong. 错误消息告诉您确切的错误。 You have the Event Source IvrService registered with the Application Log, not the IvrServiceLog. 您在应用程序日志中注册了事件源IvrService ,而不是IvrServiceLog。 The System.Diagnostics.EventLog.SourceExists verifies that the source exists, but not for a particular log. System.Diagnostics.EventLog.SourceExists验证源是否存在,但不验证特定日志。

My guess is that you originally registered this with the Application log and then later changed it to write to the IvrServiceLog . 我的猜测是你最初使用应用程序日志注册了它,然后将其更改为写入IvrServiceLog

To clean up your development machine, you could simply run the following and then you code should work going forward. 要清理您的开发机器,您只需运行以下代码,然后您的代码就可以继续运行。

System.Diagnostics.EventLog.DeleteEventSource("IvrService");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM