Ошибка при записи в журнал событий, препятствует запуску службы Windows? - PullRequest
9 голосов
/ 23 ноября 2010

Я использую следующий код для создания настраиваемого журнала событий в моем приложении службы Windows :

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:

Служба не может быть запущена. System.ArgumentException: свойство Source не было установлено перед записью в журнал событий.

at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData) at System.Diagnostics.EventLog.WriteEntry(String message) at WinService.Service.OnStart(String[] args) at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)

Ответы [ 2 ]

7 голосов
/ 23 ноября 2010

Если источник уже существует, похоже, вы не инициализируете eventLog1.Source.

Предлагаем переместить код инициализации в OnStart и выйти из конструктора.

И переместите эти две строки из оператора if:

eventLog1.Source = "WinService";
eventLog1.Log = "WinServiceLog";
5 голосов
/ 23 ноября 2010

Попробуйте следующее:

EventLog.CreateEventSource("WinService", "Application");
и eventLog1.Log = "Application";

Также добавьте в OnStart следующее:

eventLog1.Log="Application"
eventLog1.Source = "WinService";

...