У меня недавно возникла проблема во время развертывания службы Windows. Четыре компьютера не вызвали никаких проблем, но на пятой попытка любой попытки запустить службу не удалась из-за исключения. Трассировка стека исключений записывается в журнал событий, поэтому, хотя это должно быть легко определить причину:
protected override void OnStart(string[] args)
{
EventLog.WriteEntry("Starting service", EventLogEntryType.Information);
try
{
//...
base.OnStart(args);
}
catch (Exception ex)
{
EventLog.WriteEntry("Service can not start. Stack trace:" + ex.StackTrace, EventLogEntryType.Error);
Stop();
return;
}
EventLog.WriteEntry("Service started", EventLogEntryType.Information);
}
Но, увы, в журнал не была записана никакая информация. Я, наконец, проследил его до записи первого журнала. Это вызвало исключение, потому что журнал событий приложения был заполнен последними записями и настроен только на перезапись записей старше 7 дней.
Каковы наилучшие методы записи в журнал событий, учитывая, что я не могу изменить конфигурацию журнала событий приложения?
Должен ли я всегда помещать EventLog.WriteEntry
в блок try, если да, как мне обрабатывать исключение (записать его в журнал событий, вероятно, плохую идею), следует проверить статус журнала событий в моем OnStart
или у вас есть лучшее предложение?