Журнал пользовательских событий в службе Windows

В установщике проекта я создаю собственный журнал событий. Но когда мой сервис запускается, все мои журналы переходят в "Приложение" вместо моего журнала пользовательских настроек. Ниже приведен код, который я добавил в установщик.

// Create Event Source and Event Log     
EventLogInstaller logInstaller = new EventLogInstaller();
logInstaller.Source = "MyServices";
logInstaller.Log = "MyService Events";

Installers.Add(logInstaller);

Кроме того, имя службы - MyService.exe.

Когда я удаляю и переустанавливаю службу, я не могу выполнить установку со следующим журналом установки;

Запуск транзакционной установки.

Начало фазы установки установки. См. Содержимое файла журнала для выполнения сборки D:\MyService\MyService\bin\Release\MyService.exe. Файл находится по адресу D:\MyService\MyService\bin\Release\MyService.InstallLog.

Возникла исключительная ситуация на этапе установки. System.ArgumentException: источник MyServices уже существует на локальном компьютере.

Фаза отката установки начинается. См. Содержимое файла журнала для выполнения сборки D:\MyService\MyService\bin\Release\MyService.exe. Файл находится по адресу D:\MyService\MyService\bin\Release\MyService.InstallLog.

Фаза отката успешно завершена.

Транзакция завершена.

И вот как я пишу запись в журнале;

EventLog.WriteEntry ("MyServices", logMessage, logType);

Может кто-нибудь, пожалуйста, помогите мне, что я делаю неправильно.

2 ответа

У меня была аналогичная проблема, и я решил ее:

  1. Остановить текущую службу.
  2. Закройте диспетчер задач, инструмент управления службами и средство просмотра событий Windows.
  3. Используйте intallutil.exe /u для удаления текущей службы.
  4. удалить ключ реестра текущей службы журнала событий (это важно!)(\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\yourCurrentLogName) Вы можете найти текущий журнал и подтвердить удаление в средстве просмотра событий Windows.
  5. Используйте installutil.exe для повторной установки службы.
  6. Перезагрузите Windows(это тоже важно!) Я не уверен, нужно это или нет. Но я продолжал получать ошибки даже после выхода из системы. Все стало хорошо с тех пор, как я перезапускаю окна. (Может, AWS что-то кешировало?)

Необходимо создать EventSource следующим образом:

if (!EventLog.SourceExists(source))
{
  var eventSourceData = new EventSourceCreationData(source, logName);
  EventLog.CreateEventSource(eventSourceData);
}

источник - "MyServices"

logName - часть вашего имени программы.

Вставьте данные нужно следующим образом:

log = new EventLog();
log.Source = "MyServices";
log.WriteEntry(message, entryType);
Другие вопросы по тегам