Как написать в журнал событий в Windows Server 2008 с помощью C #? - PullRequest
1 голос
/ 02 октября 2010

У меня есть следующий фрагмент кода, который хорошо работает в Windows Server 2003. Он записывает в журнал событий приложений в EventViewer.Тот же код не работает в Windows 2008. Сбой приложения.Запрос о том, как записать в журнал событий в Windows Server 2008.

if (!EventLog.SourceExists("MyServiceLog"))
{
    EventLog.CreateEventSource("MyServiceLog", "Application");
}
//Create an EventLog instance and assign its source.
EventLog eventLog = new EventLog();
eventLog.Source = "MyServiceLog";
//Write an informational entry to the event log.
eventLog.WriteEntry(Header + ": " + FailureReason);

Ответы [ 3 ]

4 голосов
/ 02 октября 2010

Вы должны быть членом локальной группы администраторов, чтобы создать новый источник событий.Возможно, источник существует на Server 2003 или у вас уже есть необходимые разрешения для этой операционной системы.На сервере 2008 по умолчанию запускается без повышенных привилегий, даже если вы являетесь администратором.В этом случае вам нужно будет щелкнуть правой кнопкой мыши ваше приложение и выбрать «Запуск от имени администратора».

2 голосов
/ 03 октября 2010

Это связано с новыми наборами разрешений в Windows 2008, и ваша учетная запись не имеет привилегированного доступа для создания новых источников журнала событий.

Когда вы создаете установщик для своего приложения, лучше всего будет создать эти источники журнала событий, потому что обычно вам нужно запускать установщики с привилегированными правами.

0 голосов
/ 02 октября 2010

'происходит сбой приложения' - это не должно происходить в управляемой среде. Возможно, в этом случае это связано с разрешениями, но вы всегда будете в неведении и перезапустите свое приложение, если не добавите логику для обработки ошибок (т.е. исключений).

Измените это на

try 
{ 
    /* put your event log code here */ 
} 
catch (Exception e) 
{ 
    /* new code to gracefully handle errors */ 
}

и посмотрите на класс и поля Exception (например, e.Message, e.StrackTrace), которые вы получаете, чтобы понять, что именно не так и где это произошло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...