Практическое руководство. Запись сведений о службах в журнал

Обновлен: Ноябрь 2007

По умолчанию все проекты служб Windows могут взаимодействовать с журналом событий приложения и записывать в него информацию и исключения. Указать, требуется ли использовать в приложении эту возможность, можно с помощью свойства AutoLog. По умолчанию для всех служб, создаваемых с использованием шаблона проекта службы Windows, включена возможность записи в журнал событий. Для записи информации в журнал можно использовать статическую форму класса EventLog. При этом нет необходимости создавать экземпляр компонента EventLog или регистрировать источник вручную.

Если возможность записи информации в журнал включена, то установщик службы автоматически регистрирует все службы проекта как допустимые источники событий для журнала приложений на компьютере, на котором установлена служба. Служба вносит запись в журнал при каждом запуске, остановке, приостановке, установке или удалении службы. Кроме того, ведется запись сведений обо всех возникающих сбоях. При использовании поведения по умолчанию не требуется писать код для записи информации в журнал — служба делает это автоматически.

Если требуется вести запись в журналы, отличные от журнала приложений, необходимо задать для свойства AutoLog значение false, создать в службе настраиваемый журнал событий и зарегистрировать службу в качестве источника записей для этого журнала. Дополнительные сведения см. в разделе Практическое руководство. Создание и удаление пользовательских журналов событий. Затем необходимо написать код, который будет вносить запись в журнал всякий раз при возникновении интересующего события.

f6567h1s.alert_note(ru-ru,VS.90).gifПримечание.

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

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

  • Задайте для свойства компонента AutoLog значение true.

    f6567h1s.alert_note(ru-ru,VS.90).gifПримечание.

    По умолчанию для свойства задано значение true. Обычно нет необходимости в явной установке значения этого свойства, хотя в некоторых случаях это может понадобиться — например, при настройке свойства AutoLog в зависимости от выполнения какого-либо проверяемого условия.

Чтобы запретить службе запись событий в журнал, выполните следующие действия:

  • Задайте для свойства компонента AutoLog значение false.

    Me.AutoLog = False
    
         this.AutoLog = false;
    
         this.set_AutoLog(false);
    

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

  1. Задайте для свойства AutoLog значение false.

    f6567h1s.alert_note(ru-ru,VS.90).gifПримечание.

    Задание значения false для свойства AutoLog является обязательным условием использования настраиваемого журнала.

  2. В приложении службы создайте и настройте экземпляр компонента EventLog. Дополнительные сведения см. в разделе Практическое руководство. Создание экземпляров компонента EventLog.

  3. Создайте настраиваемый журнал. Для этого вызовите метод CreateEventSource и укажите исходную строку и имя создаваемого журнала.

  4. Запишите в свойство Source экземпляра компонента EventLog исходную строку, созданную на шаге 3.

  5. Для записи в журнал используйте метод WriteEntry экземпляра компонента EventLog.

    Следующий код иллюстрирует включение записи в настраиваемый журнал.

    Public Sub New()
      ' Turn off autologging
      Me.AutoLog = False
      ' Create a new event source and specify a log name that
      ' does not exist to create a custom log
      If Not System.Diagnostics.EventLog.SourceExists("MySource") Then
          System.Diagnostics.EventLog.CreateEventSource("MySource", _
          "MyLog")
      End If
      ' Configure the event log instance to use this source name
      EventLog1.Source = "MySource"
    End Sub
    
    
    ...
    
    
    
    Protected Overrides Sub OnStart(ByVal args() As String)
      ' Write an entry to the log you've created.
      EventLog1.WriteEntry("In Onstart.")
    End Sub
    
     public UserService2()
        {
            // Turn off autologging
            this.AutoLog = false;
            // create an event source, specifying the name of a log that
            // does not currently exist to create a new, custom log
            if (!System.Diagnostics.EventLog.SourceExists("MySource")) 
            {        
                    System.Diagnostics.EventLog.CreateEventSource(
                        "MySource","MyLog");
            }
            // configure the event log instance to use this source name
            eventLog1.Source = "MySource";
        }
    
    
    ...
    
    
    
        protected override void OnStart(string[] args)
        {
            // write an entry to the log
            eventLog1.WriteEntry("In OnStart.");
        }
    
     public UserService2()
        {
            // Turn off autologging
            this.set_AutoLog(false);
            // create an event source, specifying the name of a log that
            // does not currently exist to create a new, custom log
            if (!(System.Diagnostics.EventLog.SourceExists("MySource"))  ) 
            {
                System.Diagnostics.EventLog.CreateEventSource("MySource", 
                  "MyLog");
            }
            // configure the event log instance to use this source name
            eventLog1.set_Source("MySource");
        }
    
    
    ...
    
    
    
        protected void OnStart(System.String[] args)
        {
            // write an entry to the log
            eventLog1.WriteEntry("In OnStart.");
        }
    

См. также

Задачи

Практическое руководство. Создание и удаление пользовательских журналов событий

Практическое руководство. Создание экземпляров компонента EventLog

Основные понятия

Знакомство с приложениями служб Windows