cciUserDebugTrace

Diese Funktion ist der Funktion 'cciUserTrace' sehr ähnlich. Der einzige Unterschied besteht darin, dass der Eintrag nur dann in den Benutzertrace geschrieben wird, wenn er auf der Debugstufe aktiv ist.
Anmerkung: Es wird auch ein Eintrag in den Service-Trace geschrieben, wenn der Service-Trace und Benutzertrace auf einer beliebigen Stufe aktiv sind.

Syntax

void cciUserDebugTrace(
  int*                        returnCode,
  CciObject*     object,
  const CciChar* messageSource,
  int                 messageNumber,
  const char*    traceText,
  ...
);

Parameter

returnCode
Empfängt den Rückkehrcode von der Funktion (Ausgabe). Ein Nullzeiger zeigt an, dass der benutzerdefinierte Knoten nicht für Fehler zuständig sein möchte. Alle Ausnahmebedingungen, die bei der Ausführung dieses Aufrufs ausgegeben werden, werden beim nächsten vorgeschalteten Knoten im Nachrichtenfluss erneut ausgegeben. Wenn die Eingabe nicht NULL ist, gibt die Ausgabe den Erfolgsstatus des Aufrufs an. Wenn während der Ausführung eine Ausnahmebedingung auftritt, wird *returnCode bei der Ausgabe auf CCI_EXCEPTION gesetzt. Rufen Sie CciGetLastExceptionData auf, um weitere Informationen zu der Ausnahmebedingung zu erhalten.
object
Die Adresse des Objekts, das dem Traceeintrag (Eingabe) zugeordnet werden soll. Bei dem Objekt kann es sich um die Adresse eines CciNode*- oder CciParser*-Objekts handeln. Wenn es sich um ein CciNode*-Objekt handelt, dann wird dessen Name in den Trace geschrieben. Wenn es sich um ein CciParser*-Objekt handelt, dann wird der Name desjenigen Knotens in den Trace geschrieben, der den Parser erstellt hat. Mit diesem Objekt wird auch bestimmt, ob der Eintrag in den Trace geschrieben werden soll. Der Eintrag wird nur hineingeschrieben, wenn der Trace für den Knoten aktiv ist. Derzeit übernehmen Knoten ihre Trace-Einstellungen vom Nachrichtenfluss.
Wenn dieser Parameter NULL lautet, wird die Tracestufe für die Ausführungsgruppe zurückgegeben.
messageSource
Eine Zeichenfolge, die die Windows-Nachrichtenquelle oder den Linux- und UNIX-Nachrichtenkatalog (Eingabe) angibt. Beim Formatieren des Trace wird eine Nachricht aus der landessprachlichen Version dieses Katalogs geschrieben. Es gilt die länderspezifische Einstellung der Umgebung, in der der Trace formatiert wird. Es ist möglich, den Broker auf einer bestimmten Plattform auszuführen, das Protokoll auch auf dieser zu lesen und es dann auf einer anderen Plattform zu formatieren. Wird der Broker beispielsweise unter Linux oder UNIX ausgeführt, dort aber keine CAT-Datei vorhanden ist, kann der Benutzer das Protokoll lesen und es dann auf eine Windows-Maschine übertragen. Dort kann das Protokoll unter Verwendung der PROPERTIES-Datei formatiert werden.
Wenn dieser Parameter NULL lautet, tritt genau dasselbe ein wie beim Angeben einer leeren Zeichenfolge. D. h., alle anderen Informationen werden in das Protokoll geschrieben, und das Feld für den Katalog enthält als Wert eine leere Zeichenfolge. Wenn als Werte eine leere Zeichenfolge vorliegt, kann das Formatierungsprogramm für Protokolle die Nachrichtenquelle nicht finden. Folglich schlägt die Formatierung dieses Eintrags fehl.
messageNumber
Die Nummer, die die Nachricht innerhalb des Parameters 'messageSource' kennzeichnet (Eingabe). Wenn der Parameter 'messageSource' keine Nachricht enthält, die dem Parameter 'messageNumber' entspricht, kann das Formatierungsprogramm für Protokolle diesen Eintrag nicht formatieren.
traceText
Eine Folge aus Zeichen, die auf NULL (Eingabe) endet. Diese Zeichenfolge wird in den Service-Trace geschrieben, und so können Traceeinträge leicht mit Pfaden durch den Quellcode in Verbindung gebracht werden. Beispielsweise könnte es mehrere Pfade durch den Code geben, die dieselbe Nachricht (messageSource und messageNumber) im Trace zur Folge haben. Zwischen diesen verschiedenen Pfaden kann mit Hilfe von 'traceText' unterschieden werden. Die Zeichenfolge für 'traceText' ist also eine statische Literalzeichenfolge im Quellcode. Deshalb befindet sich dieselbe Zeichenfolge sowohl in der Quellcodedatei als auch in der formatierten Tracedatei.
...
Eine C-Variablenargumentenliste, die Nachrichteneinfügungen enthält, die der Nachricht beigefügt sind (Eingabe). Diese Einfügungen werden als Zeichenfolgen behandelt, und es wird vorausgesetzt, dass der Typ der Variablenargumente pointer to char ist. Das letzte Argument in dieser Liste muss (char*)0 sein.
  • Bei benutzerdefinierten Erweiterungen, die auf verteilten Plattformen ausgeführt werden, müssen sich die char*-Argumente in der Codepage ISO-8859-1 (ibm-918) befinden.
  • Bei benutzerdefinierten Erweiterungen, die auf Z/OS-Plattformen ausgeführt werden, müssen sich die char*-Argumente in der Codepage EBCIDIC (1047) befinden.
Dies gilt für alle char*-Argumente in traceText und die variable Argumentenliste für Einfügungen (...).

Rückgabewerte

Keine. Wenn ein Fehler auftritt, gibt der Parameter returnCode die Fehlerursache an.

Beispiel

const CciChar*   myMessageSource=CciString("SwitchMSG",BIP_DEF_COMP_CCSID);
CciNode* thisNode = ((NODE_CONTEXT_ST*)context)->nodeObject;

const char* mbElementName  = mbString((CciChar*)&elementName,BIP_DEF_COMP_CCSID);
const char* mbElementValue = mbString((CciChar*)&elementValue,BIP_DEF_COMP_CCSID);
const char* traceTextFormat = "Switch Element: name=%s, value=%s";
char* traceText = (char*)malloc(strlen(traceTextFormat) + 
                                strlen(mbElementName) + 
                                strlen(mbElementValue));
sprintf(traceText,traceTextFormat,mbElementName,mbElementValue);
    
cciUserDebugTrace(&rc,
                 (CciObject*)thisNode,
                 myMessageSource,
                 2,
                 traceText,
                 mbElementName,
                 mbElementValue,
                 (char*)0);
free((void*)mbElementName);
free((void*)mbElementValue);
free((void*)traceText);
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
as24510_