Escribir entradas de registro con sangría

Como se describe en Formato de un cuerpo de sección de registro de texto, el formato de una entrada de registro de cuerpo de sección en un registro de texto SetupAPI consta de los siguientes campos:

entry_prefix time_stamp event_category indentation formatted_message

Puede usar el campo de sangría en las entradas de registro para sangr los campos de formatted_message con el fin de facilitar la lectura y comprensión de las entradas del registro. La cantidad de sangría en un campo de sangría depende de la profundidad de sangría establecida para la sección. La profundidad de sangría es el número de unidades de sangría, donde una unidad de sangría es cinco espacios de texto monoespacio. Por ejemplo, una profundidad de sangría de 1 da como resultado una sangría de 5 espacios, una profundidad de sangría de 2 da como resultado una sangría de 10 espacios, etc. La profundidad de sangría mínima es cero y la profundidad máxima de sangría es 16.

De forma predeterminada, la profundidad de sangría de una sección es cero. Si la profundidad de sangría es cero, no se aplica sangría al campo formatted_message . Si una aplicación aumenta la profundidad de sangría para escribir una secuencia de entradas de sección con sangría, la aplicación también debe escribir un conjunto correspondiente de entradas de sección para restablecer la profundidad de sangría a cero antes de que la aplicación pueda escribir posteriormente entradas de sección adicionales que no tienen sangría.

Para cambiar la profundidad de sangría de una sección, llame a una función de registro setupAPI y use un OR bit a bit entre una de las siguientes constantes de manifiesto definidas por el sistema y el parámetro flags que se proporciona a la función de registro setupAPI.

Constante de manifiesto Cambio en profundidad de sangría

TXTLOG_DEPTH_INCR

La profundidad de sangría aumenta en 1 para la entrada de registro actual y todas las entradas de registro posteriores.

TXTLOG_DEPTH_DECR

La profundidad de sangría se reduce en 1 para la entrada de registro actual y todas las entradas de registro posteriores.

TXTLOG_TAB_1

La profundidad de sangría se incrementa en 1 solo para la entrada de registro actual.

Por ejemplo, la siguiente secuencia de llamadas a SetupWriteTextLog escribe una secuencia de entradas de registro con sangría después del encabezado de sección cuyo campo de section_title es "Ejemplo de sangría" y cuyo campo de instance_identifier es "Instancia 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"));

Si el nivel de evento del registro de texto es mayor o igual que TXTLOG_DETAILS y la categoría de evento TXTLOG_VENDOR está habilitada para el registro de texto, el código anterior escribiría las siguientes entradas de registro después del encabezado de sección.

En el ejemplo siguiente, los puntos suspensivos (...) representan cero o más entradas de registro adicionales en el mismo nivel de sangría que la entrada de registro anterior. La marca de tiempo se reemplazaría por una marca de tiempo 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 obtener otro ejemplo de entradas de sección con sangría tomadas de un registro de texto real, vea Formato de un cuerpo de sección de registro de texto.