コード例 #1
0
        public TracePayload GetSerializedPayload(object source, TraceRecord traceRecord, Exception exception, bool getServiceReference)
        {
            string str         = null;
            string str1        = null;
            string traceString = null;

            if (source != null)
            {
                str = DiagnosticTraceBase.CreateSourceString(source);
            }
            if (traceRecord != null)
            {
                StringBuilder stringBuilder = EtwDiagnosticTrace.StringBuilderPool.Take();
                try
                {
                    using (StringWriter stringWriter = new StringWriter(stringBuilder, CultureInfo.CurrentCulture))
                    {
                        using (XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter))
                        {
                            xmlTextWriter.WriteStartElement("ExtendedData");
                            traceRecord.WriteTo(xmlTextWriter);
                            xmlTextWriter.WriteEndElement();
                            xmlTextWriter.Flush();
                            stringWriter.Flush();
                            str1 = stringBuilder.ToString();
                        }
                    }
                }
                finally
                {
                    EtwDiagnosticTrace.StringBuilderPool.Return(stringBuilder);
                }
            }
            if (exception != null)
            {
                traceString = EtwDiagnosticTrace.ExceptionToTraceString(exception, 0x7000);
            }
            if (!getServiceReference || EtwDiagnosticTrace.traceAnnotation == null)
            {
                return(new TracePayload(traceString, str, DiagnosticTraceBase.AppDomainFriendlyName, str1, string.Empty));
            }
            else
            {
                return(new TracePayload(traceString, str, DiagnosticTraceBase.AppDomainFriendlyName, str1, EtwDiagnosticTrace.traceAnnotation()));
            }
        }