C# 写入事件日志时出错,是否阻止windows服务启动?
我正在使用以下代码在我的windows服务应用程序中创建自定义事件日志:C# 写入事件日志时出错,是否阻止windows服务启动?,c#,windows-services,event-log,C#,Windows Services,Event Log,我正在使用以下代码在我的windows服务应用程序中创建自定义事件日志: public ServiceConstructor() { InitializeComponent(); if (!EventLog.SourceExists("WinService")) { EventLog.CreateEventSource("WinService", "WinServiceLog"); eventLog1.Source = "WinService"; eventL
public ServiceConstructor()
{
InitializeComponent();
if (!EventLog.SourceExists("WinService"))
{
EventLog.CreateEventSource("WinService", "WinServiceLog");
eventLog1.Source = "WinService";
eventLog1.Log = "WinServiceLog";
}
}
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("Started");
}
在安装service.msi之后,当我启动服务时,它启动然后停止。然后,我在EventViewer windows日志部分中发现以下错误:
服务无法启动。
System.ArgumentException:写入前未设置源属性
到事件日志
位于System.Diagnostics.EventLog.WriteEntry(字符串消息,EventLogEntryType类型,Int32 eventID,Int16类别,字节[]rawData)
位于System.Diagnostics.EventLog.WriteEntry(字符串消息)
在WinService.Service.OnStart上(字符串[]args)
在System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(对象状态)
尝试以下操作:
EventLog.CreateEventSource(“WinService”、“应用程序”)代码>
和
eventLog1.Log=“应用程序”代码>
还可以在OnStart中添加以下内容:
eventLog1.Log=“应用程序”
eventLog1.Source=“WinService”代码>如果源代码已经存在,则看起来您没有初始化eventLog1.source
建议您将初始化代码移到OnStart并移出构造函数
并将这两行从if语句中移出:
eventLog1.Source = "WinService";
eventLog1.Log = "WinServiceLog";