Поделиться через


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

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

В этом разделе пошагового руководства рассматриваются основные вопросы, касающиеся работы с журналами событий в приложениях Visual Studio. В этом пошаговом руководстве вы узнаете, как выполняются следующие действия:

  • Создание компонентов EventLog;

  • Разработка кода создания и удаления пользовательских журналов событий;

  • Внесение в пользовательский журнал записей различных типов;

  • Считывание записей из пользовательского журнала;

  • Проверка наличия журналов и источников событий;

  • Очистка журналов;

  • Использование обозревателя серверов для проверки результатов действий над журналами событий.

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

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Создание пользовательского интерфейса

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

Создание формы и элементов управления приложения

  1. В диалоговом окне Создать проект создайте приложение Windows на языке Visual Basic или Visual C#, назвав его EventLogApp1.

  2. Добавьте в форму восемь кнопок и задайте для них следующие свойства:

    Элемент управления

    Свойство Text

    Свойство Name

    Button1

    Создать пользовательский журнал

    CreateLog

    Button2

    Удалить журнал

    DeleteLog

    Button3

    Внести запись

    WriteEntry

    Button4

    Очистить журнал

    ClearLog

    Button5

    Проверить наличие журнала

    VerifyLog

    Button6

    Проверить наличие источника

    VerifySource

    Button7

    Удалить источник событий

    RemoveSource

    Button8

    Прочитать запись

    ReadEntry

  3. Поочередно выполните над каждой кнопкой следующие действия:

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

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

    3. Продолжайте до тех пор, пока для каждой кнопки не будут созданы шаблонные обработчики событий по умолчанию.

  4. Со вкладки Компонентыпанели элементов перетащите на форму компонент EventLog.

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

Создание и удаление пользовательского журнала

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

Создание пользовательского журнала

  1. Найдите в редакторе кода процедуру CreateLog_Click.

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

    ' Source cannot already exist before creating the log.
    If EventLog.SourceExists("Source1") Then
       EventLog.DeleteEventSource("Source1")
    End If
    
    ' Logs and Sources are created as a pair.
    EventLog.CreateEventSource("Source1", "NewLog1")
    ' Associate the EventLog component with the new log.
    EventLog1.Log = "NewLog1"
    EventLog1.Source = "Source1"
    
    // Source cannot already exist before creating the log.
    if (System.Diagnostics.EventLog.SourceExists("Source1"))
    {
       System.Diagnostics.EventLog.DeleteEventSource("Source1");
    }
    
    // Logs and Sources are created as a pair.
    System.Diagnostics.EventLog.CreateEventSource("Source1", "NewLog1");
    // Associate the EventLog component with the new log.
    eventLog1.Log = "NewLog1";
    eventLog1.Source = "Source1";
    
    y0fwyz5a.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

    При создании журнала событий необходимо решить, что делать, если такой ресурс уже существует. Другой процесс (возможно, злонамеренный) уже мог создать журнал событий и получить доступ к нему. При этом данные, заносимые в журнал событий, будут доступны другому процессу.

Удаление пользовательского журнала

  1. Найдите процедуру DeleteLog_Click в редакторе кода.

  2. Введите следующий код:

    If EventLog.Exists("NewLog1") Then
       EventLog.Delete("NewLog1")
    End If
    
    if (System.Diagnostics.EventLog.Exists("NewLog1"))
    {
       System.Diagnostics.EventLog.Delete("NewLog1");
    }
    

Внесение записей в журнал

В данном разделе для внесения записей в журнал используется ранее созданный экземпляр компонента EventLog. Для этого сперва следует настроить компонент так, чтобы он использовал только что созданный источник. Затем будут сделаны две записи: информационная запись и запись об ошибке.

Внесение записей в журнал

  1. Найдите в редакторе кода процедуру WriteEntry_Click.

  2. Введите приведенный ниже код. Для внесения записей в журнал событий в коде используется перегруженный метод WriteEntry. Вторая форма позволяет указывать тип сообщения. При просмотре данных с помощью обозревателя серверов в приведенном ниже разделе "Тестирование кода" различные типы данных будут помечены разными значками.

    EventLog1.WriteEntry("This is an informational message")
    EventLog1.WriteEntry("This is an error message", _
       Diagnostics.EventLogEntryType.Error)
    
    eventLog1.WriteEntry("This is an informational message");
    eventLog1.WriteEntry("This is an error message", 
       System.Diagnostics.EventLogEntryType.Error);
    

Очистка журнала

В данном разделе для удаления записей, внесенных в пользовательский журнал, используется метод Clear.

Очистка журнала

  1. Найдите в редакторе кода процедуру ClearLog_Click.

  2. Вызовите метод Clear экземпляра компонента EventLog.

    EventLog1.Clear()
    
    eventLog1.Clear();
    

Проверка журналов и источников

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

Проверка наличия пользовательского журнала

  1. Найдите в редакторе кода процедуру VerifyLog_Click.

  2. Создайте окно сообщения, которое проверяет, существует или отсутствует указанный журнал событий, и соответствующим образом отображает значение true или false. Используйте следующий код:

    Dim logExists As Boolean = EventLog.Exists("NewLog1")
    MessageBox.Show("Does the log exist? " & logExists.ToString())
    
    bool logExists = System.Diagnostics.EventLog.Exists("NewLog1");
    MessageBox.Show("Does the log exist? " + logExists.ToString());
    

Проверка наличия источника

  1. Найдите в редакторе кода процедуру VerifySource_Click.

  2. Создайте окно сообщения, которое проверяет, существует или отсутствует указанный источник, и соответствующим образом отображает значение true или false. Используйте следующий код:

    Dim sourceExists As Boolean = EventLog.SourceExists("Source1")
    MessageBox.Show("Does the source exist? " + sourceExists.ToString())
    
    bool sourceExists = 
       System.Diagnostics.EventLog.SourceExists("Source1");
    MessageBox.Show("Does the source exist? " + sourceExists.ToString());
    

Удаление источников

В данном разделе будет создан код удаления источника. Для этого сперва потребуется проверить наличие требуемого источника (Source1), а затем вызвать для его удаления метод DeleteEventSource.

Удаление созданного источника событий

  1. Найдите в редакторе кода процедуру RemoveSource_Click.

  2. Добавьте следующий код:

    If EventLog.SourceExists("Source1") Then
       EventLog.DeleteEventSource("Source1")
    End If
    
    if (System.Diagnostics.EventLog.SourceExists("Source1"))
    {
       System.Diagnostics.EventLog.DeleteEventSource("Source1");
    }
    

Считывание записей

В этом разделе будет создан код перебора элементов коллекции записей в журнале событий и вывода содержащихся в нем сообщений.

Считывание записей из пользовательского журнала

  1. Найдите в редакторе кода процедуру ReadEntry_Click.

  2. Добавьте следующий код:

    Dim entry As EventLogEntry
    If EventLog1.Entries.Count > 0 Then
       For Each entry In EventLog1.Entries
          System.Windows.Forms.MessageBox.Show(entry.Message)
       Next
    Else
       MessageBox.Show("There are no entries in the log.")
    End If
    
    if (eventLog1.Entries.Count > 0) 
    {
       foreach (System.Diagnostics.EventLogEntry entry 
          in eventLog1.Entries)
       {
          MessageBox.Show(entry.Message);
       }
    }
    else 
    {
       MessageBox.Show("There are no entries in the log.");
    }
    

Тестирование кода

В этом разделе для проверки результатов выполнения кода используется обозреватель серверов.

Запуск обозревателя серверов

  1. В меню Вид выберите пункт Обозреватель серверов.

  2. Откройте узел, соответствующий текущему серверу, а затем разверните его подузел Журналы событий.

Построение и запуск приложения

  1. Сохраните файлы и нажмите клавишу F5 для построения и запуска проекта. Появится созданная ранее форма с восемью кнопками.

  2. Нажмите кнопку Создать пользовательский журнал.

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

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

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

  4. Нажмите кнопку Обновить.

  5. Проверьте, появился ли в узле Журналы событий журнал NewLog1.

Тестирование создания, удаления и проверки пользовательских журналов

  1. Вернитесь в выполняемую форму и нажмите кнопку Проверить наличие журнала.

    Должно отобразиться сообщение с текстом "True".

  2. Нажмите кнопку Удалить журнал, после чего снова нажмите кнопку Проверить наличие журнала.

    На этот раз сообщение должно содержать текст "False".

  3. Для повторного создания журнала снова нажмите кнопку Создать пользовательский журнал.

Тестирование внесения и чтения записей в пользовательском журнале

  1. Нажмите в форме кнопку Внести запись.

  2. Раскройте в обозревателе серверов узел NewLog1.

  3. Раскройте в нем узел Source1.

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

  4. Вернитесь в форму и нажмите кнопку Прочитать запись.

    Будут выведены два сообщения: одно с информационной записью, а другое — с записью об ошибке.

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

    Если нажать кнопку Внести запись несколько раз, то будут выведены дополнительные сообщения.

Тестирование очистки журнала

  1. Нажмите в форме кнопку Очистить журнал.

  2. В обозревателе серверов щелкните правой кнопкой мыши узел NewLog1 и выберите команду Обновить.

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

Тестирование удаления источника

  1. Нажмите в форме кнопку Удалить источник событий.

  2. Нажмите кнопку Проверить наличие источника. Должно появиться сообщение с текстом "False", указывающее на то, что источник Source1 больше не существует.

  3. Нажмите кнопку Внести запись.

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

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

  4. В обозревателе серверов щелкните правой кнопкой мыши узел NewLog1 и выберите команду Обновить. В журнале должны отобразиться две записи.

  5. Снова нажмите кнопку Проверить наличие источника. Должно появиться сообщение с текстом "True", указывающее на то, что источник Source1 существует.

  6. Помимо этого, по завершении тестирования можно нажать кнопку Удалить журнал. Это приведет к удалению журнала NewLog1 и источника Source1, так что конфигурация системы не претерпит каких-либо постоянных изменений.

См. также

Другие ресурсы

Примеры способов наблюдения за системой

Запись в журнал событий, связанных с приложением, сервером и безопасностью