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);
                    }
                }
            }
        }
예제 #3
0
        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);
                }
            }
        }
예제 #4
0
        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);
                        }
                    }
                }
            }
        }
예제 #5
0
파일: Logger.cs 프로젝트: gustavo-melo/mono
		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
		}
예제 #6
0
파일: Logger.cs 프로젝트: wamiq/debian-mono
		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 ();
			}
		}
예제 #7
0
        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);
                }
            }
        }
예제 #8
0
 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);
                 }
             }
         }
     }
 }
 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);
             }
         }
     }
 }
 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);
         }
     }
 }