Prohlížení protokolů zpráv
Toto téma popisuje, jak můžete zobrazit protokoly zpráv.
Zobrazení protokolů zpráv v Prohlížeči trasování služby
Zpráva bude transformována, protože je zpracována WCF. Zpráva, která se protokoluje, proto odráží pouze obsah zprávy v okamžiku, kdy byla zaznamenána, nikoli obsah v drátě.
Vzhledem k tomu, že výstup protokolování zpráv nemá žádný vztah k formátu přenosu zprávy, protokolování zpráv vždy vypíše dekódovanou zprávu. Pokud jste správně nakonfigurovali protokolování zpráv, měly by být všechny protokolované zprávy ve formátu prostého textu. Například formát (prostý text) protokolovaných zpráv není ovlivněn použitím binárního kodéru zpráv.
Výstup XmlWriterTraceListener je soubor, který obsahuje posloupnost fragmentů XML. Měli byste vědět, že soubor není platným souborem XML. K zobrazení souborů protokolu zpráv se doporučuje použít nástroj Service Trace Viewer (SvcTraceViewer.exe ). Další informace o tom, jak tento nástroj používat, najdete v tématu Použití prohlížeče trasování služby pro zobrazení korelovaných trasování a řešení potíží.
V Prohlížeči trasování služeb jsou zprávy uvedené na kartě Zpráva . Zprávy, které byly způsobeny nebo které souvisejí, se chyba zpracování zvýrazní žlutě (úroveň upozornění) nebo červeně (úroveň chyby) v závislosti na závažnosti chyby. Poklikáním na zprávu se zobrazí trasování zprávy v kontextu žádosti o zpracování.
Poznámka:
Pokud zpráva neobsahuje žádné záhlaví, není zaprotokolována žádná <header/>
značka.
Zobrazení zpráv protokolovaných klientem, přenosem a službou
Vaše prostředí může obsahovat klienta, který odešle zprávu předávací službě, která následně zprávu přepošle službě. Pokud je protokolování zpráv povolené na všech třech místech a všechny tři protokoly zpráv se zobrazí v nástroji Service Trace Viewer (SvcTraceViewer.exe) současně, výměny protokolu zpráv se nesprávně vykreslují. Důvodem je to, že CorrelationId
záhlaví zprávy a ActivityId
v záhlaví zprávy není jedinečné pro každý pár pro odesílání a přijímání.
K vyřešení tohoto problému můžete použít některou z následujících metod.
V nástroji Service Trace Viewer (SvcTraceViewer.exe) můžete kdykoli zobrazit pouze dva ze tří protokolů zpráv.
Pokud musíte současně zobrazit všechny tři protokoly v nástroji Service Trace Viewer (SvcTraceViewer.exe), můžete službu předávání upravit vytvořením nové Message instance. Tato instance by měla být kopií textu příchozí zprávy a všechna záhlaví s výjimkou
ActivityId
záhlaví aAction
záhlaví. Následující příklad kódu ukazuje, jak to provést.
Message outgoingMessage = Message.CreateMessage(incomingMessage.Version, incomingMessage.Headers.Action, incomingMessage.GetReaderAtBodyContents());
for (int i = 0; i < incomingMessage.Headers.Count; i++)
{
if (incomingMessage.Headers[i].Name.Equals("ActivityId", StringComparison.InvariantCultureIgnoreCase) ||
incomingMessage.Headers[i].Name.Equals("Action", StringComparison.InvariantCultureIgnoreCase))
{
continue;
}
outgoingMessage.Headers.CopyHeaderFrom(incomingMessage, i);
}
Výjimečné případy pro nepřesný obsah protokolování zpráv
Za následujícíchpodmínekch zpráv nemusí být přesná reprezentace streamu octetu, který se nachází na drátě.
V případě BasicHttpBinding se hlavičky obálky protokolují pro příchozí zprávy v oboru názvů /adresování/none.
Prázdné znaky můžou být neshodné.
U příchozích zpráv mohou být prázdné prvky reprezentovány odlišně. Například <značka/značka místo značky></><>
Pokud je známé protokolování PII ve výchozím nastavení zakázané, nebo explicitní nastavení enableLoggingKnownPii="true".
Kódování je povoleno pro transformaci na UTF-8.