写入缩进日志条目

文本日志节正文的格式中所述, SetupAPI 文本日志 中节体日志条目的格式由以下字段组成:

entry_prefix time_stamp event_category indentation formatted_message

可以使用日志条目中的 缩进 字段来缩进 formatted_message 字段,以使日志条目更易于阅读和理解。 缩进字段中的缩进量取决于为节设置的缩进深度。 缩进深度是缩进单位的数目,其中缩进单位是五个单空间文本空间。 例如,缩进深度为 1 会导致缩进 5 个空格,缩进深度为 2 会导致缩进 10 个空格,依此。 最小缩进深度为零,最大缩进深度为 16。

默认情况下,节的缩进深度为零。 如果缩进深度为零,则不会缩进 formatted_message 字段。 如果应用程序增加缩进深度以写入缩进节条目序列,则应用程序还必须编写一组相应的节条目,以将缩进深度重置为零,然后应用程序才能写入未缩进的其他节条目。

若要更改节的缩进深度,请调用 SetupAPI 日志记录函数,并在以下系统定义的清单常量之一与提供给 SetupAPI 日志记录函数的 flags 参数之间使用按位 OR。

清单常量 缩进深度更改

TXTLOG_DEPTH_INCR

当前日志条目和所有后续日志条目的缩进深度增加 1。

TXTLOG_DEPTH_DECR

当前日志条目和所有后续日志条目的缩进深度将减少 1。

TXTLOG_TAB_1

仅当前日志条目的缩进深度增加 1。

例如,以下对 SetupWriteTextLog 的调用序列在节头后面写入一系列缩进日志条目,其 section_title 字段为“缩进示例”, 其instance_identifier 字段为“Instance 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

有关从实际文本日志中提取的缩进节条目的另一个示例,请参阅 文本日志节正文的格式