private static void LogInternal(MessageLogTraceRecord record) { PlainXmlWriter writer = new PlainXmlWriter(MaxMessageSize); try { record.WriteTo(writer); writer.Close(); TraceXPathNavigator data = writer.Navigator; if (((messageTraceSource != null) && !messageTraceSource.ShouldLogPii) || !LogKnownPii) { data.RemovePii(PiiHeadersPaths); if ((LogMessageBody && (record.Message != null)) && HasSecurityAction(record.Message)) { data.RemovePii(PiiBodyPaths); } } LogInternal(record.MessageLoggingSource, data); } catch (PlainXmlWriter.MaxSizeExceededException) { if (DiagnosticUtility.ShouldTraceWarning) { TraceUtility.TraceEvent(TraceEventType.Warning, 0x2000b, System.ServiceModel.SR.GetString("TraceCodeMessageNotLoggedQuotaExceeded"), record.Message); } } }
private static void LogMessageImpl(ref Message message, XmlReader reader, MessageLoggingSource source) { ServiceModelActivity activity = DiagnosticUtility.ShouldUseActivity ? TraceUtility.ExtractActivity(message) : null; using (ServiceModelActivity.BoundOperation(activity)) { if (ShouldLogMessages(source) && ((numberOfMessagesToLog > 0) || (numberOfMessagesToLog == -1))) { bool flag = ((source & MessageLoggingSource.LastChance) != MessageLoggingSource.None) || ((source & MessageLoggingSource.TransportSend) != MessageLoggingSource.None); source &= ~MessageLoggingSource.LastChance; if (((flag || (message is NullMessage)) || (message.Version.Addressing != AddressingVersion.None)) && (MatchFilters(message, source) && ((numberOfMessagesToLog == -1) || (numberOfMessagesToLog > 0)))) { MessageLogTraceRecord record = new MessageLogTraceRecord(ref message, reader, source, LogMessageBody); LogInternal(record); } } } }
static void LogInternal(MessageLogTraceRecord record) { Fx.Assert(null != record, "record cannot be null"); PlainXmlWriter xmlWriter = new PlainXmlWriter(MessageLogger.MaxMessageSize); try { record.WriteTo(xmlWriter); xmlWriter.Close(); TraceXPathNavigator navigator = xmlWriter.Navigator; if ((MessageLogger.messageTraceSource != null && !MessageLogger.messageTraceSource.ShouldLogPii) || !MessageLogger.LogKnownPii) { navigator.RemovePii(MessageLogger.PiiHeadersPaths); if (MessageLogger.LogMessageBody && null != record.Message) { if (HasSecurityAction(record.Message)) { navigator.RemovePii(MessageLogger.PiiBodyPaths); } } } LogInternal(record.MessageLoggingSource, navigator); } catch (PlainXmlWriter.MaxSizeExceededException) { if (DiagnosticUtility.ShouldTraceWarning) { TraceUtility.TraceEvent(TraceEventType.Warning, TraceCode.MessageNotLoggedQuotaExceeded, SR.GetString(SR.TraceCodeMessageNotLoggedQuotaExceeded), record.Message); } } }
static void LogMessageImpl(ref Message message, XmlReader reader, MessageLoggingSource source) { ServiceModelActivity activity = DiagnosticUtility.ShouldUseActivity ? TraceUtility.ExtractActivity(message) : null; using (ServiceModelActivity.BoundOperation(activity)) { if (ShouldLogMessages(source) && (MessageLogger.numberOfMessagesToLog > 0 || MessageLogger.numberOfMessagesToLog == MessageLogger.Unlimited)) { bool lastChance = (source & MessageLoggingSource.LastChance) != 0 || (source & MessageLoggingSource.TransportSend) != 0; source &= ~MessageLoggingSource.LastChance; // MessageLogger doesn't log AddressingVersion.None in the encoder since we want to make sure we log // as much of the message as possible. So let the Transport log later. if ((lastChance || message is NullMessage || message.Version.Addressing != AddressingVersion.None) && MatchFilters(message, source)) { if (MessageLogger.numberOfMessagesToLog == MessageLogger.Unlimited || MessageLogger.numberOfMessagesToLog > 0) { MessageLogTraceRecord record = new MessageLogTraceRecord(ref message, reader, source, MessageLogger.LogMessageBody); LogInternal(record); } } } } }
public static void LogMessage (MessageLogTraceRecord log) { var sw = new StringWriter (); var xw = XmlWriter.Create (sw, xws); xw.WriteStartElement ("MessageLogTraceRecord", xmlns); xw.WriteStartAttribute ("Time"); xw.WriteValue (log.Time); xw.WriteEndAttribute (); xw.WriteAttributeString ("Source", log.Source.ToString ()); xw.WriteAttributeString ("Type", log.Type.FullName); log.Message.CreateMessage ().WriteMessage (xw); xw.WriteEndElement (); #if NET_2_1 Console.Error.Write ("[{0}]", event_id++); Console.Error.WriteLine (sw); #else message_source.TraceEvent (TraceEventType.Information, event_id++, sw.ToString ()); #endif }
public static void LogMessage (MessageLogTraceRecord log) { var sw = new StringWriter (); #if NET_2_1 var xw = XmlWriter.Create (sw, xws); #else var doc = new XmlDocument (); var xw = doc.CreateNavigator ().AppendChild (); #endif xw.WriteStartElement ("MessageLogTraceRecord", xmlns); xw.WriteStartAttribute ("Time"); xw.WriteValue (log.Time); xw.WriteEndAttribute (); xw.WriteAttributeString ("Source", log.Source.ToString ()); xw.WriteAttributeString ("Type", log.Type.FullName); var msg = log.Message.CreateMessage (); if (!msg.IsEmpty) msg.WriteMessage (xw); xw.WriteEndElement (); xw.Close (); event_id++; lock (log_writer){ #if NET_2_1 log_writer.Write ("[{0}] ", event_id); TraceCore (TraceEventType.Information, event_id, /*FIXME*/false, /*FIXME*/Guid.Empty, sw); #else TraceCore (TraceEventType.Information, event_id, /*FIXME*/false, /*FIXME*/Guid.Empty, doc.CreateNavigator ()); message_source.TraceData (TraceEventType.Information, event_id, doc.CreateNavigator ()); #endif log_writer.Flush (); } }