Запись записей журнала с отступом
Как описано в разделе Формат текста раздела журнала текста, формат записи журнала текста раздела в текстовом журнале SetupAPI состоит из следующих полей:
entry_prefix time_stamp event_category indentation formatted_message
Поле отступа в записях журнала можно использовать для отступа полей formatted_message , чтобы сделать записи журнала более понятными для чтения и понимания. Величина отступа в поле отступа зависит от глубины отступа, заданной для раздела. Глубина отступа — это количество единиц отступа, где единица отступа — пять текстовых пробелов в монопространстве. Например, глубина отступа 1 приводит к отступу в 5 пробелов, глубина отступа 2 приводит к отступу в 10 пробелов и т. д. Минимальная глубина отступа равна нулю, а максимальная глубина отступа — 16.
По умолчанию глубина отступа раздела равна нулю. Если глубина отступа равна нулю, поле formatted_message не будет иметь отступ. Если приложение увеличивает глубину отступа для записи последовательности записей разделов с отступом, приложение также должно записать соответствующий набор записей разделов, чтобы сбросить глубину отступа до нуля, прежде чем приложение сможет впоследствии записать дополнительные записи раздела, которые не будут отступы.
Чтобы изменить глубину отступов для раздела, вызовите функцию ведения журнала SetupAPI и используйте побитовое ИЛИ между одной из следующих системных констант манифеста и параметром flags, предоставленным для функции ведения журнала SetupAPI.
Константа манифеста | Изменение глубины отступов |
---|---|
TXTLOG_DEPTH_INCR |
Глубина отступа увеличивается на 1 для текущей записи журнала и всех последующих записей журнала. |
TXTLOG_DEPTH_DECR |
Глубина отступа уменьшается на 1 для текущей записи журнала и всех последующих записей журнала. |
TXTLOG_TAB_1 |
Глубина отступа увеличивается только на 1 для текущей записи журнала. |
Например, следующая последовательность вызовов SetupWriteTextLog записывает последовательность записей журнала с отступом после заголовка раздела, поле section_title которого — "Пример отступа" и поле instance_identifier которого — "Экземпляр 0".
// The LogToken value was previously returned by a call to
// SetupGetThreadLogToken.
// The LogToken value specifies a section in one of the text logs.
DWORD Category = TXTLOG_VENDOR;
DWORD Flags = TXTLOG_DETAILS;
SetupWriteTextLog(LogToken, Category, Flags, TEXT("Subsection A"));
// Additional SetupWriteTextLog calls that write entries at Subsection A indentation level
SetupWriteTextLog(LogToken, Category, Flags | TXTLOG_DEPTH_INCR, TEXT("Subsection A.1"));
// Additional SetupWriteTextLog calls that write entries at Subsection A.1 indentation level
SetupWriteTextLog(LogToken, Category, Flags | TXTLOG_DEPTH_INCR, TEXT("Subsection A.1.1"));
// Additional SetupWriteTextLog calls that write entries at Subsection A.1.1 indentation level
SetupWriteTextLog(LogToken, Category, Flags, TEXT("End of Subsection A.1.1"));
// Additional SetupWriteTextLog calls that write entries at Subsection A.1 indentation level
SetupWriteTextLog(LogToken, Category, Flags | TXTLOG_DEPTH_DECR, TEXT("End of Subsection A.1"));
// Additional SetupWriteTextLog calls that write entries at Subsection A indentation level
SetupWriteTextLog(LogToken, Category, Flags | TXTLOG_DEPTH_DECR, TEXT("End of Subsection A"));
Если уровень событий текстового журнала больше или равен TXTLOG_DETAILS и для текстового журнала включена категория событий TXTLOG_VENDOR, предыдущий код будет записывать следующие записи журнала после заголовка раздела.
В следующем примере многоточие (...) представляет ноль или более дополнительных записей журнала на том же уровне отступа, что и предыдущая запись журнала. Метка времени будет заменена фактической меткой времени.
>>> [Indentation Example - Instance 0]
>>> 2005/02/13 22:06:28.109: Section start
: Subsection A
...
: Subsection A.1
...
: Subsection A.1.1
...
: End Subsection A.1.1
...
: End of Subsection A.1
...
: End of Subsection A
Еще один пример записей разделов с отступом, взятых из фактического текстового журнала, см. в разделе Формат текста раздела журнала текста.