事件日志写入错误

这很简单,我想写一些东西到事件日志。

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); } } 

例外是:

  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) 

错误消息告诉您确切的错误。 您在应用程序日志中注册了Event Source IvrService ,而不是IvrServiceLog。 System.Diagnostics.EventLog.SourceExistsvalidation源是否存在,但不validation特定日志。

我的猜测是你最初使用应用程序日志注册了它,然后将其更改为写入IvrServiceLog

要清理您的开发机器,您只需运行以下代码,然后您的代码就可以继续运行。

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