C# · 12月 30, 2021

c# – 事件日志写入错误

很简单,我想写一些事情日志. 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)解决方法 错误信息告诉你什么是错误的.您已将事件源IvrService注册到应用程序日志,而不是IvrServiceLog. System.Diagnostics.EventLog.sourceExists验证源是否存在,但不是用于特定日志.

我的猜测是,您最初在应用程序日志中注册了该文件,然后将其更改为写入IvrServiceLog.

要清理您的开发机器,您可以简单地运行以下内容,然后您的代码应该继续工作.

System.Diagnostics.EventLog.DeleteEventSource(“IvrService”);