Запись журнала ошибок или предупреждений
В следующем примере показано, как приложение обычно вызывает 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 записи журнала — "! ", который указывает, что это предупреждающее сообщение, в отличие от "!!! ", которое указывает на сообщение об ошибке.