Как получить услугу в программе просмотра событий - PullRequest
0 голосов
/ 05 января 2012

Я создал одну службу Windows. После установки сервиса я запустил сервис. но я не получил журнал событий для моей службы.

Я использовал следующий код.

public partial class Service1 : ServiceBase
{
    public Service1()
    {
        InitializeComponent();
        this.ServiceName = ConfigurationManager.AppSettings.Get("ServiceName");
        string sourceName = ConfigurationManager.AppSettings["Source"];
        string logName = ConfigurationManager.AppSettings["Log"];
        if (!System.Diagnostics.EventLog.SourceExists(sourceName))
            System.Diagnostics.EventLog.CreateEventSource(sourceName, logName);
        eventLog.Source = sourceName;
        eventLog.Log = logName;

    }

    protected override void OnStart(string[] args)
    {
        eventLog.WriteEntry("Service Starting...");
    }

    protected override void OnStop()
    {
        eventLog.WriteEntry("Service Stopped...");
    }
}

Я проверяю это в окне просмотра события we, я не получил имя своей службы

Как это получить.

Спасибо, Пуджа

1 Ответ

0 голосов
/ 05 января 2012

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

Вам нужно будет добавить обработчики try / catch в конструктор, чтобы определить, так ли это.

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

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

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

    try {
        if (!System.Diagnostics.EventLog.SourceExists(sourceName))
            System.Diagnostics.EventLog.CreateEventSource(sourceName, logName);
    } catch (SecurityException e) {
        sourceName = "Application";
    }
    eventLog.Source = sourceName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...