public void WriteTraceSource(ref EventDescriptor eventDescriptor, string description, TracePayload payload)
        {
            if (this.TracingEnabled)
            {
                XPathNavigator navigator = null;
                try
                {
                    string msdnTraceCode;
                    int    legacyEventId;
                    EtwDiagnosticTrace.GenerateLegacyTraceCode(ref eventDescriptor, out msdnTraceCode, out legacyEventId);

                    string      traceString   = BuildTrace(ref eventDescriptor, description, payload, msdnTraceCode);
                    XmlDocument traceDocument = new XmlDocument();
                    traceDocument.LoadXml(traceString);
                    navigator = traceDocument.CreateNavigator();
                    this.TraceSource.TraceData(TraceLevelHelper.GetTraceEventType(eventDescriptor.Level, eventDescriptor.Opcode), legacyEventId, navigator);

                    if (this.CalledShutdown)
                    {
                        this.TraceSource.Flush();
                    }
                }
                catch (Exception exception)
                {
                    if (Fx.IsFatal(exception))
                    {
                        throw;
                    }

                    LogTraceFailure(navigator == null ? string.Empty : navigator.ToString(), exception);
                }
            }
        }
Exemple #2
0
        private static string BuildTrace(ref System.Diagnostics.Eventing.EventDescriptor eventDescriptor, string description, TracePayload payload)
        {
            StringBuilder stringBuilder = new StringBuilder();
            XmlTextWriter xmlTextWriter = new XmlTextWriter(new StringWriter(stringBuilder, CultureInfo.CurrentCulture));

            xmlTextWriter.WriteStartElement("TraceRecord");
            xmlTextWriter.WriteAttributeString("xmlns", "http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord");
            xmlTextWriter.WriteAttributeString("Severity", TraceLevelHelper.LookupSeverity((TraceEventLevel)eventDescriptor.Level, (TraceEventOpcode)eventDescriptor.Opcode));
            xmlTextWriter.WriteAttributeString("Channel", DiagnosticTrace.LookupChannel((TraceChannel)eventDescriptor.Channel));
            xmlTextWriter.WriteElementString("TraceIdentifier", DiagnosticTrace.GenerateTraceCode(ref eventDescriptor));
            xmlTextWriter.WriteElementString("Description", description);
            xmlTextWriter.WriteElementString("AppDomain", payload.AppDomainFriendlyName);
            if (!string.IsNullOrEmpty(payload.EventSource))
            {
                xmlTextWriter.WriteElementString("Source", payload.EventSource);
            }
            if (!string.IsNullOrEmpty(payload.ExtendedData))
            {
                xmlTextWriter.WriteRaw(payload.ExtendedData);
            }
            if (!string.IsNullOrEmpty(payload.SerializedException))
            {
                xmlTextWriter.WriteRaw(payload.SerializedException);
            }
            xmlTextWriter.WriteEndElement();
            return(stringBuilder.ToString());
        }
Exemple #3
0
        static string BuildTrace(ref EventDescriptor eventDescriptor, string description, TracePayload payload)
        {
            StringBuilder sb     = new StringBuilder();
            XmlTextWriter writer = new XmlTextWriter(new StringWriter(sb, CultureInfo.CurrentCulture));

            writer.WriteStartElement(DiagnosticStrings.TraceRecordTag);
            writer.WriteAttributeString(DiagnosticStrings.NamespaceTag, DiagnosticTrace.TraceRecordVersion);
            writer.WriteAttributeString(DiagnosticStrings.SeverityTag,
                                        TraceLevelHelper.LookupSeverity((TraceEventLevel)eventDescriptor.Level, (TraceEventOpcode)eventDescriptor.Opcode));
            writer.WriteAttributeString(DiagnosticStrings.ChannelTag, DiagnosticTrace.LookupChannel((TraceChannel)eventDescriptor.Channel));

            writer.WriteElementString(DiagnosticStrings.TraceCodeTag, DiagnosticTrace.GenerateTraceCode(ref eventDescriptor));
            writer.WriteElementString(DiagnosticStrings.DescriptionTag, description);
            writer.WriteElementString(DiagnosticStrings.AppDomain, payload.AppDomainFriendlyName);

            if (!string.IsNullOrEmpty(payload.EventSource))
            {
                writer.WriteElementString(DiagnosticStrings.SourceTag, payload.EventSource);
            }

            if (!string.IsNullOrEmpty(payload.ExtendedData))
            {
                writer.WriteRaw(payload.ExtendedData);
            }

            if (!string.IsNullOrEmpty(payload.SerializedException))
            {
                writer.WriteRaw(payload.SerializedException);
            }

            writer.WriteEndElement();

            return(sb.ToString());
        }
Exemple #4
0
 public void WriteTraceSource(ref System.Diagnostics.Eventing.EventDescriptor eventDescriptor, string description, TracePayload payload)
 {
     if (this.TracingEnabled)
     {
         XPathNavigator data = null;
         try
         {
             string      xml      = BuildTrace(ref eventDescriptor, description, payload);
             XmlDocument document = new XmlDocument();
             document.LoadXml(xml);
             data = document.CreateNavigator();
             this.TraceSource.TraceData(TraceLevelHelper.GetTraceEventType(eventDescriptor.Level, eventDescriptor.Opcode), eventDescriptor.EventId, data);
             if (this.calledShutdown)
             {
                 this.TraceSource.Flush();
             }
         }
         catch (Exception exception)
         {
             if (Fx.IsFatal(exception))
             {
                 throw;
             }
             this.LogTraceFailure((data == null) ? string.Empty : data.ToString(), exception);
         }
     }
 }
Exemple #5
0
 public bool ShouldTraceToTraceSource(TraceEventLevel eventLevel)
 {
     if (!this.HaveListeners || this.TraceSource == null)
     {
         return(false);
     }
     return((int)SourceLevels.Off != ((int)TraceLevelHelper.GetTraceEventType(eventLevel) & (int)this.Level));
 }
Exemple #6
0
        public void WriteTraceSource(ref EventDescriptor eventDescriptor, string description, TracePayload payload)
        {
            string str = null;
            int    num = 0;
            string empty;

            if (base.TracingEnabled)
            {
                XPathNavigator xPathNavigator = null;
                try
                {
                    EtwDiagnosticTrace.GenerateLegacyTraceCode(ref eventDescriptor, out str, out num);
                    string      str1        = EtwDiagnosticTrace.BuildTrace(ref eventDescriptor, description, payload, str);
                    XmlDocument xmlDocument = new XmlDocument();
                    xmlDocument.LoadXml(str1);
                    xPathNavigator = xmlDocument.CreateNavigator();
                    base.TraceSource.TraceData(TraceLevelHelper.GetTraceEventType(eventDescriptor.Level, eventDescriptor.Opcode), num, xPathNavigator);
                    if (base.CalledShutdown)
                    {
                        base.TraceSource.Flush();
                    }
                }
                catch (Exception exception1)
                {
                    Exception exception = exception1;
                    if (!Fx.IsFatal(exception))
                    {
                        EtwDiagnosticTrace etwDiagnosticTrace = this;
                        if (xPathNavigator == null)
                        {
                            empty = string.Empty;
                        }
                        else
                        {
                            empty = xPathNavigator.ToString();
                        }
                        etwDiagnosticTrace.LogTraceFailure(empty, exception);
                    }
                    else
                    {
                        throw;
                    }
                }
            }
        }
Exemple #7
0
        private static string BuildTrace(ref EventDescriptor eventDescriptor, string description, TracePayload payload, string msdnTraceCode)
        {
            string        str;
            StringBuilder stringBuilder = EtwDiagnosticTrace.StringBuilderPool.Take();

            try
            {
                using (StringWriter stringWriter = new StringWriter(stringBuilder, CultureInfo.CurrentCulture))
                {
                    using (XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter))
                    {
                        xmlTextWriter.WriteStartElement("TraceRecord");
                        xmlTextWriter.WriteAttributeString("xmlns", "http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord");
                        xmlTextWriter.WriteAttributeString("Severity", TraceLevelHelper.LookupSeverity((TraceEventLevel)eventDescriptor.Level, (TraceEventOpcode)eventDescriptor.Opcode));
                        xmlTextWriter.WriteAttributeString("Channel", EtwDiagnosticTrace.LookupChannel((TraceChannel)eventDescriptor.Channel));
                        xmlTextWriter.WriteElementString("TraceIdentifier", msdnTraceCode);
                        xmlTextWriter.WriteElementString("Description", description);
                        xmlTextWriter.WriteElementString("AppDomain", payload.AppDomainFriendlyName);
                        if (!string.IsNullOrEmpty(payload.EventSource))
                        {
                            xmlTextWriter.WriteElementString("Source", payload.EventSource);
                        }
                        if (!string.IsNullOrEmpty(payload.ExtendedData))
                        {
                            xmlTextWriter.WriteRaw(payload.ExtendedData);
                        }
                        if (!string.IsNullOrEmpty(payload.SerializedException))
                        {
                            xmlTextWriter.WriteRaw(payload.SerializedException);
                        }
                        xmlTextWriter.WriteEndElement();
                        xmlTextWriter.Flush();
                        stringWriter.Flush();
                        str = stringBuilder.ToString();
                    }
                }
            }
            finally
            {
                EtwDiagnosticTrace.StringBuilderPool.Return(stringBuilder);
            }
            return(str);
        }
Exemple #8
0
 public void WriteTraceSource(ref System.Diagnostics.Eventing.EventDescriptor eventDescriptor, string description, TracePayload payload)
 {
     if (this.TracingEnabled)
     {
         XPathNavigator xPathNavigator = null;
         try
         {
             string            str              = DiagnosticTrace.BuildTrace(ref eventDescriptor, description, payload);
             XmlDocument       xmlDocument      = new XmlDocument();
             StringReader      stringReader     = new StringReader(str);
             XmlReaderSettings xmlReaderSetting = new XmlReaderSettings()
             {
                 DtdProcessing = DtdProcessing.Prohibit
             };
             using (XmlReader xmlReader = XmlReader.Create(stringReader, xmlReaderSetting))
             {
                 xmlDocument.Load(xmlReader);
             }
             xPathNavigator = xmlDocument.CreateNavigator();
             this.TraceSource.TraceData(TraceLevelHelper.GetTraceEventType(eventDescriptor.Level, eventDescriptor.Opcode), eventDescriptor.EventId, xPathNavigator);
             if (this.calledShutdown)
             {
                 this.TraceSource.Flush();
             }
         }
         catch (Exception exception1)
         {
             Exception exception = exception1;
             if (Fx.IsFatal(exception))
             {
                 throw;
             }
             this.LogTraceFailure((xPathNavigator == null ? string.Empty : xPathNavigator.ToString()), exception);
         }
     }
 }
Exemple #9
0
 public bool ShouldTraceToTraceSource(TraceEventLevel level)
 {
     return(ShouldTrace(TraceLevelHelper.GetTraceEventType(level)));
 }
Exemple #10
0
 public bool ShouldTraceToTraceSource(TraceEventLevel eventLevel)
 {
     return(this.HaveListeners && this.TraceSource != null &&
            0 != ((int)TraceLevelHelper.GetTraceEventType(eventLevel) & (int)this.Level));
 }
Exemple #11
0
 public bool ShouldTraceToTraceSource(TraceEventLevel level)
 {
     return((this.HaveListeners && (this.TraceSource != null)) && (((TraceEventType)0) != (TraceLevelHelper.GetTraceEventType(level) & ((TraceEventType)((int)this.Level)))));
 }