Freigeben über


Schreiben von eingezogenen Protokolleinträgen

Wie unter Format of a Text Log Section Body beschrieben, besteht das Format eines Abschnittstextprotokolleintrags in einem SetupAPI-Textprotokoll aus den folgenden Feldern:

entry_prefix time_stamp event_category indentation formatted_message

Sie können das Einzugsfeld in Protokolleinträgen verwenden, um die formatted_message Feldern einzurücken, um die Protokolleinträge besser lesbar und verständlich zu machen. Die Größe des Einzugs in einem Einzugsfeld hängt von der Einzugstiefe ab, die für den Abschnitt festgelegt ist. Die Einzugstiefe ist die Anzahl der Einzugseinheiten, wobei eine Einzugseinheit fünf Monospace-Texträume ist. Beispielsweise führt eine Einzugstiefe von 1 zu einem Einzug von 5 Leerzeichen, eine Einzugstiefe von 2 führt zu einem Einzug von 10 Leerzeichen usw. Die minimale Einzugstiefe ist 0, und die maximale Einzugstiefe beträgt 16.

Standardmäßig ist die Einzugstiefe eines Abschnitts 0. Wenn die Einzugstiefe 0 ist, wird das formatted_message Feld nicht eingerückt. Wenn eine Anwendung die Einzugstiefe erhöht, um eine Sequenz eingezogener Abschnittseinträge zu schreiben, muss die Anwendung auch einen entsprechenden Satz von Abschnittseinträgen schreiben, um die Einzugstiefe auf 0 zurückzusetzen, bevor die Anwendung anschließend zusätzliche Abschnittseinträge schreiben kann, die nicht eingezogen sind.

Um die Einzugstiefe für einen Abschnitt zu ändern, rufen Sie eine SetupAPI-Protokollierungsfunktion auf, und verwenden Sie einen bitweisen OR zwischen einer der folgenden systemdefinierten Manifestkonstanten und dem Flags-Parameter, der für die SetupAPI-Protokollierungsfunktion bereitgestellt wird.

Manifestkonstante Änderung der Einzugstiefe

TXTLOG_DEPTH_INCR

Die Einzugstiefe wird für den aktuellen Protokolleintrag und alle nachfolgenden Protokolleinträge um 1 erhöht.

TXTLOG_DEPTH_DECR

Die Einzugstiefe wird für den aktuellen Protokolleintrag und alle nachfolgenden Protokolleinträge um 1 verringert.

TXTLOG_TAB_1

Die Einzugstiefe wird nur für den aktuellen Protokolleintrag um 1 erhöht.

Die folgende Sequenz von Aufrufen von SetupWriteTextLog schreibt beispielsweise eine Sequenz von eingezogenen Protokolleinträgen nach dem Abschnittsheader, dessen section_title Feld "Einzugsbeispiel" lautet und dessen instance_identifier Feld "Instanz 0" lautet.

// 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"));

Wenn die Ereignisebene für das Textprotokoll größer oder gleich TXTLOG_DETAILS ist und die Ereigniskategorie TXTLOG_VENDOR für das Textprotokoll aktiviert ist, schreibt der vorherige Code die folgenden Protokolleinträge nach dem Abschnittsheader.

Im folgenden Beispiel stellt die Auslassungspunkte (...) null oder mehr zusätzliche Protokolleinträge auf der gleichen Einrückungsebene wie der vorherige Protokolleintrag dar. Der Zeitstempel wird durch einen tatsächlichen Zeitstempel ersetzt.

>>>  [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

Ein weiteres Beispiel für eingezogene Abschnittseinträge, die aus einem tatsächlichen Textprotokoll entnommen wurden, finden Sie unter Format of a Text Log Section Body.