Журнал пользовательских событий в службе 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 ответа
У меня была аналогичная проблема, и я решил ее:
- Остановить текущую службу.
- Закройте диспетчер задач, инструмент управления службами и средство просмотра событий Windows.
- Используйте intallutil.exe /u для удаления текущей службы.
- удалить ключ реестра текущей службы журнала событий (это важно!)(\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\yourCurrentLogName) Вы можете найти текущий журнал и подтвердить удаление в средстве просмотра событий Windows.
- Используйте installutil.exe для повторной установки службы.
- Перезагрузите 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);