Gravando entradas de log recuadas
Conforme descrito em Formato de um Corpo da Seção de Log de Texto, o formato de uma entrada de log do corpo da seção em um log de texto SetupAPI consiste nos seguintes campos:
entry_prefix time_stamp event_category indentation formatted_message
Você pode usar o campo de recuo em entradas de log para recuar os campos de formatted_message para facilitar a leitura e a compreensão das entradas de log. A quantidade de recuo em um campo de recuo depende da profundidade de recuo definida para a seção. A profundidade de recuo é o número de unidades de recuo, em que uma unidade de recuo é de cinco espaços de texto de monospace. Por exemplo, uma profundidade de recuo de 1 resulta em um recuo de 5 espaços, uma profundidade de recuo de 2 resulta em um recuo de 10 espaços e assim por diante. A profundidade mínima de recuo é zero e a profundidade máxima de recuo é 16.
Por padrão, a profundidade de recuo de uma seção é zero. Se a profundidade de recuo for zero, o campo formatted_message não será recuado. Se um aplicativo aumentar a profundidade de recuo para gravar uma sequência de entradas de seção recuadas, o aplicativo também deverá gravar um conjunto correspondente de entradas de seção para redefinir a profundidade de recuo para zero antes que o aplicativo possa gravar posteriormente entradas de seção adicionais que não são recuadas.
Para alterar a profundidade de recuo de uma seção, chame uma função de log SetupAPI e use um OR bit a bit entre uma das seguintes constantes de manifesto definidas pelo sistema e o parâmetro flags fornecido para a função de log SetupAPI.
Constante de manifesto | Alteração na profundidade do recuo |
---|---|
TXTLOG_DEPTH_INCR |
A profundidade de recuo é aumentada em 1 para a entrada de log atual e todas as entradas de log subsequentes. |
TXTLOG_DEPTH_DECR |
A profundidade de recuo é reduzida em 1 para a entrada de log atual e todas as entradas de log subsequentes. |
TXTLOG_TAB_1 |
A profundidade de recuo é aumentada em 1 apenas para a entrada de log atual. |
Por exemplo, a sequência de chamadas a seguir para SetupWriteTextLog grava uma sequência de entradas de log recuadas após o cabeçalho da seção cujo campo section_title é "Exemplo de Recuo" e cujo campo instance_identifier é "Instância 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"));
Se o nível de evento do log de texto for maior ou igual a TXTLOG_DETAILS e a categoria de evento TXTLOG_VENDOR estiver habilitada para o log de texto, o código anterior gravará as seguintes entradas de log após o cabeçalho da seção.
No exemplo a seguir, as reticências (...) representam zero ou mais entradas de log adicionais no mesmo nível de recuo que a entrada de log anterior. O carimbo de data/hora seria substituído por um carimbo de data/hora real.
>>> [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
Para obter outro exemplo de entradas de seção recuadas que foram obtidas de um log de texto real, consulte Formato de um corpo de seção de log de texto.