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


Запись журнала ошибок или предупреждений

В следующем примере показано, как приложение обычно вызывает SetupWriteTextLog для записи ошибки или предупреждения в текстовый журнал SetupAPI. Однако если событие связано с ошибкой SetupAPI или ошибкой Win32, приложение может вызвать SetupWriteTextLogError . SetupWriteTextLogError упрощает ведение журнала и интерпретацию сведений об этих типах ошибок.

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

Ведение журнала сообщения об ошибке

В этом примере приложение вызывает SetupWriteTextLog, предоставляя следующие значения параметров:

  • LogToken имеет значение маркера журнала, которое было получено путем вызова SetupGetThreadLogToken или является одним из системных значений маркеров журнала, описанных в разделе Токены журнала.

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

  • Для флагов задано побитовое значение OR TXTLOG_ERROR и TXTLOG_TIMESTAMP. В этом примере глубина отступа не изменяется, а текущая глубина отступа ранее была задана в пять текстовых пробелов в монопространстве. Сведения об изменении глубины отступов см. в разделе Запись записей журнала с отступом. Уровни событий описаны в разделе Настройка уровня событий для текстового журнала .

  • Для параметра MessageStr задано значение TEXT("Application Error (%d)").

  • Разделенный запятыми список содержит переменную ErrorCode.

Следующий код вызывает SetupWriteTextLog для записи записи журнала для этого примера:

//The LogToken value was previously returned by call to
//SetupGetThreadLogToken or one of the system-defined log token values
DWORD Category = TXTLOG_VENDOR; 
DWORD Flags = TXTLOG_ERROR | TXTLOG_TIMESTAMP;
DWORD ErrorCode = 1111; // An error code value

SetupWriteTextLog(LogToken, Category, Flags, TEXT("Application Error (%d)"),ErrorCode);

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

!!!  2005/02/13 22:06:28.109:    :  Application error (1111) 

Поле entry_prefix "!!! " указывает, что запись журнала является сообщением об ошибке.

Ведение журнала предупреждающего сообщения

Ведение журнала предупреждающего сообщения почти идентично ведению журнала сообщения об ошибке. Разница заключается в параметрах уровня событий. Установите для флагов значение TXTLOG_WARNING вместо TXTLOG_ERROR. Если метод SetupWriteTextLog вызывается, как описано в разделе Ведение журнала сообщения об ошибке, за исключением того, что для параметра Flags задано побитовое значение ИЛИ TXTLOG_WARNING и TXTLOG_TIMESTAMP, SetupWriteTextLog будет записывать следующую запись журнала:

!  2005/02/13 22:06:28.109:    :  Application error (1111) 

Поле entry_prefix записи журнала — "! ", который указывает, что это предупреждающее сообщение, в отличие от "!!! ", которое указывает на сообщение об ошибке.