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);
                }
            }
        }
Beispiel #2
0
		internal static void ActionItemScheduled(EtwDiagnosticTrace trace, EventTraceActivity eventTraceActivity)
		{
			TracePayload serializedPayload = trace.GetSerializedPayload(null, null, null);
			if (TraceCore.IsEtwEventEnabled(trace, 13))
			{
				TraceCore.WriteEtwEvent(trace, 13, eventTraceActivity, serializedPayload.AppDomainFriendlyName);
			}
		}
 public void Event(int eventId, TraceEventLevel traceEventLevel, TraceChannel channel, string description)
 {
     if (this.TracingEnabled)
     {
         EventDescriptor eventDescriptor = EtwDiagnosticTrace.GetEventDescriptor(eventId, channel, traceEventLevel);
         this.Event(ref eventDescriptor, description);
     }
 }
Beispiel #4
0
        private static EtwDiagnosticTrace InitializeTracing()
        {
            //Etw tracing is switched off by not enabling the session
            s_etwProviderId = EtwDiagnosticTrace.DefaultEtwProviderId;

            EtwDiagnosticTrace trace = new EtwDiagnosticTrace(baseEventSourceName, s_etwProviderId);

            return trace;
        }
 /// <summary>
 /// Gets trace definition like: AppDomain unloading. AppDomain.FriendlyName {0}, ProcessName {1}, ProcessId {2}.
 /// Event description ID=57393, Level=informational, Channel=Debug
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="appdomainName">Parameter 0 for event: AppDomain unloading. AppDomain.FriendlyName {0}, ProcessName {1}, ProcessId {2}.</param>
 /// <param name="processName">Parameter 1 for event: AppDomain unloading. AppDomain.FriendlyName {0}, ProcessName {1}, ProcessId {2}.</param>
 /// <param name="processId">Parameter 2 for event: AppDomain unloading. AppDomain.FriendlyName {0}, ProcessName {1}, ProcessId {2}.</param>
 internal static void AppDomainUnload(EtwDiagnosticTrace trace, string appdomainName, string processName, string processId)
 {
     TracePayload payload = trace.GetSerializedPayload(null, null, null);
     if (TraceCore.IsEtwEventEnabled(trace, 0))
     {
         TraceCore.WriteEtwEvent(trace, 0, null, appdomainName, processName, processId, payload.AppDomainFriendlyName);
     }
     if (trace.ShouldTraceToTraceSource(TraceEventLevel.Informational))
     {
         string description = string.Format(Culture, ResourceManager.GetString("AppDomainUnload", Culture), appdomainName, processName, processId);
         TraceCore.WriteTraceSource(trace, 0, description, payload);
     }
 }
Beispiel #6
0
        protected override void OnUnhandledException(Exception exception)
        {
            string             str;
            EtwDiagnosticTrace etwDiagnosticTrace = this;

            if (exception != null)
            {
                str = exception.ToString();
            }
            else
            {
                str = string.Empty;
            }
            TraceCore.UnhandledException(etwDiagnosticTrace, str, exception);
        }
        static string BuildTrace(ref EventDescriptor eventDescriptor, string description, TracePayload payload, string msdnTraceCode)
        {
            StringBuilder sb = StringBuilderPool.Take();

            try
            {
                using (StringWriter stringWriter = new StringWriter(sb, CultureInfo.CurrentCulture))
                {
                    using (XmlTextWriter writer = new XmlTextWriter(stringWriter))
                    {
                        writer.WriteStartElement(DiagnosticStrings.TraceRecordTag);
                        writer.WriteAttributeString(DiagnosticStrings.NamespaceTag, EtwDiagnosticTrace.TraceRecordVersion);
                        writer.WriteAttributeString(DiagnosticStrings.SeverityTag,
                                                    TraceLevelHelper.LookupSeverity((TraceEventLevel)eventDescriptor.Level, (TraceEventOpcode)eventDescriptor.Opcode));
                        writer.WriteAttributeString(DiagnosticStrings.ChannelTag, EtwDiagnosticTrace.LookupChannel((TraceChannel)eventDescriptor.Channel));

                        writer.WriteElementString(DiagnosticStrings.TraceCodeTag, msdnTraceCode);
                        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();
                        writer.Flush();
                        stringWriter.Flush();

                        return(sb.ToString());
                    }
                }
            }
            finally
            {
                StringBuilderPool.Return(sb);
            }
        }
Beispiel #8
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()));
            }
        }
Beispiel #9
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;
                    }
                }
            }
        }
Beispiel #10
0
        public void TraceTransfer(Guid newId)
        {
            string empty;
            Guid   activityId = DiagnosticTraceBase.ActivityId;

            if (newId != activityId)
            {
                try
                {
                    if (base.HaveListeners)
                    {
                        base.TraceSource.TraceTransfer(0, null, newId);
                    }
                    if (this.IsEtwEventEnabled(ref EtwDiagnosticTrace.transferEventDescriptor))
                    {
                        EtwProvider        etwProvider            = this.etwProvider;
                        EventDescriptor    eventDescriptorPointer = EtwDiagnosticTrace.transferEventDescriptor;
                        EventTraceActivity eventTraceActivity     = new EventTraceActivity(activityId, false);
                        Guid guid = newId;
                        if (EtwDiagnosticTrace.traceAnnotation == null)
                        {
                            empty = string.Empty;
                        }
                        else
                        {
                            empty = EtwDiagnosticTrace.traceAnnotation();
                        }
                        etwProvider.WriteTransferEvent(eventDescriptorPointer, eventTraceActivity, guid, empty, DiagnosticTraceBase.AppDomainFriendlyName);
                    }
                }
                catch (Exception exception1)
                {
                    Exception exception = exception1;
                    if (!Fx.IsFatal(exception))
                    {
                        base.LogTraceFailure(null, exception);
                    }
                    else
                    {
                        throw;
                    }
                }
            }
        }
Beispiel #11
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);
        }
Beispiel #12
0
        private static string GetInnerException(Exception exception, int remainingLength, int remainingAllowedRecursionDepth)
        {
            string str;

            if (remainingAllowedRecursionDepth >= 1)
            {
                StringBuilder stringBuilder = EtwDiagnosticTrace.StringBuilderPool.Take();
                try
                {
                    using (StringWriter stringWriter = new StringWriter(stringBuilder, CultureInfo.CurrentCulture))
                    {
                        using (XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter))
                        {
                            if (EtwDiagnosticTrace.WriteStartElement(xmlTextWriter, "InnerException", ref remainingLength))
                            {
                                EtwDiagnosticTrace.WriteExceptionToTraceString(xmlTextWriter, exception.InnerException, remainingLength, remainingAllowedRecursionDepth);
                                xmlTextWriter.WriteEndElement();
                                xmlTextWriter.Flush();
                                stringWriter.Flush();
                                str = stringBuilder.ToString();
                            }
                            else
                            {
                                str = null;
                            }
                        }
                    }
                }
                finally
                {
                    EtwDiagnosticTrace.StringBuilderPool.Return(stringBuilder);
                }
                return(str);
            }
            else
            {
                return(null);
            }
        }
Beispiel #13
0
        internal static string ExceptionToTraceString(Exception exception, int maxTraceStringLength)
        {
            string        str;
            StringBuilder stringBuilder = EtwDiagnosticTrace.StringBuilderPool.Take();

            try
            {
                using (StringWriter stringWriter = new StringWriter(stringBuilder, CultureInfo.CurrentCulture))
                {
                    using (XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter))
                    {
                        EtwDiagnosticTrace.WriteExceptionToTraceString(xmlTextWriter, exception, maxTraceStringLength, 64);
                        xmlTextWriter.Flush();
                        stringWriter.Flush();
                        str = stringBuilder.ToString();
                    }
                }
            }
            finally
            {
                EtwDiagnosticTrace.StringBuilderPool.Return(stringBuilder);
            }
            return(str);
        }
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=104, Level=Informational, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool ActivityScheduledRecordIsEnabled(EtwDiagnosticTrace trace)
 {
     return EtwTrackingParticipantTrackRecords.IsEtwEventEnabled(trace, 0);
 }
Beispiel #15
0
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=132, Level=verbose, Channel=Debug
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool BufferPoolChangeQuotaIsEnabled(EtwDiagnosticTrace trace)
 {
     return WcfEventSource.Instance.BufferPoolChangeQuotaIsEnabled();
 }
Beispiel #16
0
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=57396, Level=warning, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool ThrowingExceptionIsEnabled(EtwDiagnosticTrace trace)
 {
     return WcfEventSource.Instance.ThrowingExceptionIsEnabled();
 }
        public void TraceTransfer(Guid newId)
        {
            Guid oldId = EtwDiagnosticTrace.ActivityId;

            if (newId != oldId)
            {
                try
                {
                    if (this.HaveListeners)
                    {
                        this.TraceSource.TraceTransfer(0, null, newId);
                    }
                    //also emit to ETW
                    if (this.IsEtwEventEnabled(ref EtwDiagnosticTrace.transferEventDescriptor, false))
                    {
                        this.etwProvider.WriteTransferEvent(ref EtwDiagnosticTrace.transferEventDescriptor, new EventTraceActivity(oldId), newId,
                                                            EtwDiagnosticTrace.traceAnnotation == null ? string.Empty : EtwDiagnosticTrace.traceAnnotation(),
                                                            DiagnosticTraceBase.AppDomainFriendlyName);
                    }
                }
                catch (Exception e)
                {
                    if (Fx.IsFatal(e))
                    {
                        throw;
                    }

                    LogTraceFailure(null, e);
                }
            }
        }
Beispiel #18
0
 /// <summary>
 /// Gets trace definition like: Throwing an exception. Source: {0}. Exception details: {1}
 /// Event description ID=57407, Level=verbose, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="param0">Parameter 0 for event: Throwing an exception. Source: {0}. Exception details: {1}</param>
 /// <param name="param1">Parameter 1 for event: Throwing an exception. Source: {0}. Exception details: {1}</param>
 /// <param name="exception">Exception associated with the event</param>
 internal static void ThrowingExceptionVerbose(EtwDiagnosticTrace trace, string param0, string param1, System.Exception exception)
 {
     string serializedException = EtwDiagnosticTrace.ExceptionToTraceString(exception, int.MaxValue);
     WcfEventSource.Instance.ThrowingExceptionVerbose(param0, param1, serializedException);
 }
Beispiel #19
0
 /// <summary>
 /// Gets trace definition like: Handling an exception.  Exception details: {0}
 /// Event description ID=57394, Level=informational, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="param0">Parameter 0 for event: Handling an exception.  Exception details: {0}</param>
 /// <param name="exception">Exception associated with the event</param>
 internal static void HandledException(EtwDiagnosticTrace trace, string param0, System.Exception exception)
 {
     string serializedException = EtwDiagnosticTrace.ExceptionToTraceString(exception, int.MaxValue);
     WcfEventSource.Instance.HandledException(param0, serializedException);
 }
 /// <summary>
 /// Gets trace definition like: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}
 /// Event description ID=105, Level=Warning, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="eventTraceActivity">The event trace activity</param>
 /// <param name="InstanceId">Parameter 0 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="RecordNumber">Parameter 1 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="EventTime">Parameter 2 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="FaultSourceActivityName">Parameter 3 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="FaultSourceActivityId">Parameter 4 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="FaultSourceActivityInstanceId">Parameter 5 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="FaultSourceActivityTypeName">Parameter 6 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="FaultHandlerActivityName">Parameter 7 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="FaultHandlerActivityId">Parameter 8 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="FaultHandlerActivityInstanceId">Parameter 9 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="FaultHandlerActivityTypeName">Parameter 10 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="Fault">Parameter 11 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="IsFaultSource">Parameter 12 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="Annotations">Parameter 13 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="ProfileName">Parameter 14 for event: TrackRecord = FaultPropagationRecord, InstanceID={0}, RecordNumber={1}, EventTime={2}, FaultSourceActivityName={3}, FaultSourceActivityId={4}, FaultSourceActivityInstanceId={5}, FaultSourceActivityTypeName={6}, FaultHandlerActivityName={7},  FaultHandlerActivityId = {8}, FaultHandlerActivityInstanceId ={9}, FaultHandlerActivityTypeName={10}, Fault={11}, IsFaultSource={12}, Annotations={13}, ProfileName = {14}</param>
 /// <param name="reference">Reference (e.g. service reference) to be added to trace</param>
 internal static bool FaultPropagationRecord(
             EtwDiagnosticTrace trace, 
             System.Runtime.Diagnostics.EventTraceActivity eventTraceActivity, 
             System.Guid InstanceId, 
             long RecordNumber, 
             long EventTime, 
             string FaultSourceActivityName, 
             string FaultSourceActivityId, 
             string FaultSourceActivityInstanceId, 
             string FaultSourceActivityTypeName, 
             string FaultHandlerActivityName, 
             string FaultHandlerActivityId, 
             string FaultHandlerActivityInstanceId, 
             string FaultHandlerActivityTypeName, 
             string Fault, 
             bool IsFaultSource, 
             string Annotations, 
             string ProfileName, 
             string reference)
 {
     bool etwTraceResult = true;
     TracePayload payload = trace.GetSerializedPayload(null, null, null);
     if (EtwTrackingParticipantTrackRecords.IsEtwEventEnabled(trace, 4))
     {
         etwTraceResult = EtwTrackingParticipantTrackRecords.WriteEtwEvent(trace, 4, eventTraceActivity, InstanceId, RecordNumber, EventTime, FaultSourceActivityName, FaultSourceActivityId, FaultSourceActivityInstanceId, FaultSourceActivityTypeName, FaultHandlerActivityName, FaultHandlerActivityId, FaultHandlerActivityInstanceId, FaultHandlerActivityTypeName, Fault, IsFaultSource, Annotations, ProfileName, reference, payload.AppDomainFriendlyName);
     }
     return etwTraceResult;
 }
Beispiel #21
0
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=134, Level=verbose, Channel=Debug
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool ActionItemCallbackInvokedIsEnabled(EtwDiagnosticTrace trace)
 {
     return WcfEventSource.Instance.ActionItemCallbackInvokedIsEnabled();
 }
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=119, Level=Informational, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool WorkflowInstanceUpdatedRecordIsEnabled(EtwDiagnosticTrace trace)
 {
     return EtwTrackingParticipantTrackRecords.IsEtwEventEnabled(trace, 18);
 }
 /// <summary>
 /// Gets trace definition like: TrackRecord= WorkflowInstanceUpdatedRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, State = {4}, OriginalDefinitionIdentity = {5}, UpdatedDefinitionIdentity = {6}, Annotations = {7}, ProfileName = {8}
 /// Event description ID=119, Level=Informational, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="eventTraceActivity">The event trace activity</param>
 /// <param name="InstanceId">Parameter 0 for event: TrackRecord= WorkflowInstanceUpdatedRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, State = {4}, OriginalDefinitionIdentity = {5}, UpdatedDefinitionIdentity = {6}, Annotations = {7}, ProfileName = {8}</param>
 /// <param name="RecordNumber">Parameter 1 for event: TrackRecord= WorkflowInstanceUpdatedRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, State = {4}, OriginalDefinitionIdentity = {5}, UpdatedDefinitionIdentity = {6}, Annotations = {7}, ProfileName = {8}</param>
 /// <param name="EventTime">Parameter 2 for event: TrackRecord= WorkflowInstanceUpdatedRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, State = {4}, OriginalDefinitionIdentity = {5}, UpdatedDefinitionIdentity = {6}, Annotations = {7}, ProfileName = {8}</param>
 /// <param name="ActivityDefinitionId">Parameter 3 for event: TrackRecord= WorkflowInstanceUpdatedRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, State = {4}, OriginalDefinitionIdentity = {5}, UpdatedDefinitionIdentity = {6}, Annotations = {7}, ProfileName = {8}</param>
 /// <param name="State">Parameter 4 for event: TrackRecord= WorkflowInstanceUpdatedRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, State = {4}, OriginalDefinitionIdentity = {5}, UpdatedDefinitionIdentity = {6}, Annotations = {7}, ProfileName = {8}</param>
 /// <param name="OriginalDefinitionIdentity">Parameter 5 for event: TrackRecord= WorkflowInstanceUpdatedRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, State = {4}, OriginalDefinitionIdentity = {5}, UpdatedDefinitionIdentity = {6}, Annotations = {7}, ProfileName = {8}</param>
 /// <param name="UpdatedDefinitionIdentity">Parameter 6 for event: TrackRecord= WorkflowInstanceUpdatedRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, State = {4}, OriginalDefinitionIdentity = {5}, UpdatedDefinitionIdentity = {6}, Annotations = {7}, ProfileName = {8}</param>
 /// <param name="Annotations">Parameter 7 for event: TrackRecord= WorkflowInstanceUpdatedRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, State = {4}, OriginalDefinitionIdentity = {5}, UpdatedDefinitionIdentity = {6}, Annotations = {7}, ProfileName = {8}</param>
 /// <param name="ProfileName">Parameter 8 for event: TrackRecord= WorkflowInstanceUpdatedRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, State = {4}, OriginalDefinitionIdentity = {5}, UpdatedDefinitionIdentity = {6}, Annotations = {7}, ProfileName = {8}</param>
 /// <param name="reference">Reference (e.g. service reference) to be added to trace</param>
 internal static bool WorkflowInstanceUpdatedRecord(EtwDiagnosticTrace trace, System.Runtime.Diagnostics.EventTraceActivity eventTraceActivity, System.Guid InstanceId, long RecordNumber, long EventTime, string ActivityDefinitionId, string State, string OriginalDefinitionIdentity, string UpdatedDefinitionIdentity, string Annotations, string ProfileName, string reference)
 {
     bool etwTraceResult = true;
     TracePayload payload = trace.GetSerializedPayload(null, null, null);
     if (EtwTrackingParticipantTrackRecords.IsEtwEventEnabled(trace, 18))
     {
         etwTraceResult = EtwTrackingParticipantTrackRecords.WriteEtwEvent(trace, 18, eventTraceActivity, InstanceId, RecordNumber, EventTime, ActivityDefinitionId, State, OriginalDefinitionIdentity, UpdatedDefinitionIdentity, Annotations, ProfileName, reference, payload.AppDomainFriendlyName);
     }
     return etwTraceResult;
 }
 /// <summary>
 /// Gets trace definition like: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}
 /// Event description ID=118, Level=Error, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="eventTraceActivity">The event trace activity</param>
 /// <param name="InstanceId">Parameter 0 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="RecordNumber">Parameter 1 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="EventTime">Parameter 2 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="ActivityDefinitionId">Parameter 3 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="SourceName">Parameter 4 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="SourceId">Parameter 5 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="SourceInstanceId">Parameter 6 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="SourceTypeName">Parameter 7 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="Exception">Parameter 8 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="Annotations">Parameter 9 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="ProfileName">Parameter 10 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="WorkflowDefinitionIdentity">Parameter 11 for event: TrackRecord = WorkflowInstanceUnhandledExceptionRecord, InstanceID = {0}, RecordNumber = {1}, EventTime = {2}, ActivityDefinitionId = {3}, SourceName = {4}, SourceId = {5}, SourceInstanceId = {6}, SourceTypeName={7}, Exception={8},  Annotations= {9}, ProfileName = {10}, WorkflowDefinitionIdentity = {11}</param>
 /// <param name="reference">Reference (e.g. service reference) to be added to trace</param>
 internal static bool WorkflowInstanceUnhandledExceptionRecordWithId(EtwDiagnosticTrace trace, System.Runtime.Diagnostics.EventTraceActivity eventTraceActivity, System.Guid InstanceId, long RecordNumber, long EventTime, string ActivityDefinitionId, string SourceName, string SourceId, string SourceInstanceId, string SourceTypeName, string Exception, string Annotations, string ProfileName, string WorkflowDefinitionIdentity, string reference)
 {
     bool etwTraceResult = true;
     TracePayload payload = trace.GetSerializedPayload(null, null, null);
     if (EtwTrackingParticipantTrackRecords.IsEtwEventEnabled(trace, 17))
     {
         etwTraceResult = EtwTrackingParticipantTrackRecords.WriteEtwEvent(trace, 17, eventTraceActivity, InstanceId, RecordNumber, EventTime, ActivityDefinitionId, SourceName, SourceId, SourceInstanceId, SourceTypeName, Exception, Annotations, ProfileName, WorkflowDefinitionIdentity, reference, payload.AppDomainFriendlyName);
     }
     return etwTraceResult;
 }
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=118, Level=Error, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool WorkflowInstanceUnhandledExceptionRecordWithIdIsEnabled(EtwDiagnosticTrace trace)
 {
     return EtwTrackingParticipantTrackRecords.IsEtwEventEnabled(trace, 17);
 }
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=116, Level=Informational, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool WorkflowInstanceSuspendedRecordWithIdIsEnabled(EtwDiagnosticTrace trace)
 {
     return EtwTrackingParticipantTrackRecords.IsEtwEventEnabled(trace, 15);
 }
Beispiel #27
0
 /// <summary>
 /// Gets trace definition like: BufferPool of size {0}, changing quota by {1}.
 /// Event description ID=132, Level=verbose, Channel=Debug
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="PoolSize">Parameter 0 for event: BufferPool of size {0}, changing quota by {1}.</param>
 /// <param name="Delta">Parameter 1 for event: BufferPool of size {0}, changing quota by {1}.</param>
 internal static void BufferPoolChangeQuota(EtwDiagnosticTrace trace, int PoolSize, int Delta)
 {
     WcfEventSource.Instance.BufferPoolChangeQuota(PoolSize, Delta);
 }
Beispiel #28
0
        private static void GenerateLegacyTraceCode(ref EventDescriptor eventDescriptor, out string msdnTraceCode, out int legacyEventId)
        {
            int eventId;
            int num = eventDescriptor.EventId;

            switch (num)
            {
            case 0xe031:
            {
                msdnTraceCode = EtwDiagnosticTrace.GenerateMsdnTraceCode("System.ServiceModel.Diagnostics", "AppDomainUnload");
                legacyEventId = 0x20001;
                return;
            }

            case 0xe032:
            case 0xe03c:
            case 0xe03d:
            case 0xe03e:
            {
                msdnTraceCode = EtwDiagnosticTrace.GenerateMsdnTraceCode("System.ServiceModel.Diagnostics", "TraceHandledException");
                legacyEventId = 0x20004;
                return;
            }

            case 0xe033:
            case 0xe036:
            case 0xe037:
            case 0xe038:
            case 0xe039:
            case 0xe03a:
            case 0xe03b:
            {
                eventId       = eventDescriptor.EventId;
                msdnTraceCode = eventId.ToString(CultureInfo.InvariantCulture);
                legacyEventId = eventDescriptor.EventId;
                return;
            }

            case 0xe034:
            case 0xe03f:
            {
                msdnTraceCode = EtwDiagnosticTrace.GenerateMsdnTraceCode("System.ServiceModel.Diagnostics", "ThrowingException");
                legacyEventId = 0x20003;
                return;
            }

            case 0xe035:
            {
                msdnTraceCode = EtwDiagnosticTrace.GenerateMsdnTraceCode("System.ServiceModel.Diagnostics", "UnhandledException");
                legacyEventId = 0x20005;
                return;
            }

            default:
            {
                eventId       = eventDescriptor.EventId;
                msdnTraceCode = eventId.ToString(CultureInfo.InvariantCulture);
                legacyEventId = eventDescriptor.EventId;
                return;
            }
            }
        }
Beispiel #29
0
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=133, Level=verbose, Channel=Debug
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool ActionItemScheduledIsEnabled(EtwDiagnosticTrace trace)
 {
     return WcfEventSource.Instance.ActionItemScheduledIsEnabled();
 }
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=105, Level=Warning, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool FaultPropagationRecordIsEnabled(EtwDiagnosticTrace trace)
 {
     return EtwTrackingParticipantTrackRecords.IsEtwEventEnabled(trace, 4);
 }
Beispiel #31
0
 /// <summary>
 /// Gets trace definition like: IO Thread scheduler callback invoked.
 /// Event description ID=134, Level=verbose, Channel=Debug
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="eventTraceActivity">The event trace activity</param>
 internal static void ActionItemCallbackInvoked(EtwDiagnosticTrace trace, System.Runtime.Diagnostics.EventTraceActivity eventTraceActivity)
 {
     WcfEventSource.Instance.ActionItemCallbackInvoked();
 }
Beispiel #32
0
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=57403, Level=warning, Channel=Debug
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool TraceCodeEventLogWarningIsEnabled(EtwDiagnosticTrace trace)
 {
     return WcfEventSource.Instance.TraceCodeEventLogWarningIsEnabled();
 }
Beispiel #33
0
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=57394, Level=informational, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool HandledExceptionIsEnabled(EtwDiagnosticTrace trace)
 {
     return WcfEventSource.Instance.HandledExceptionIsEnabled();
 }
Beispiel #34
0
 /// <summary>
 /// Gets trace definition like: Wrote to the EventLog.
 /// Event description ID=57403, Level=warning, Channel=Debug
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="traceRecord">Extended data (TraceRecord) for the event</param>
 internal static void TraceCodeEventLogWarning(EtwDiagnosticTrace trace, TraceRecord traceRecord)
 {
     WcfEventSource.Instance.TraceCodeEventLogWarning(traceRecord.EventId);
 }
Beispiel #35
0
 /// <summary>
 /// Gets trace definition like: An unexpected failure occurred. Applications should not attempt to handle this error. For diagnostic purposes, this English message is associated with the failure: {0}.
 /// Event description ID=57395, Level=error, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="param0">Parameter 0 for event: An unexpected failure occurred. Applications should not attempt to handle this error. For diagnostic purposes, this English message is associated with the failure: {0}.</param>
 internal static void ShipAssertExceptionMessage(EtwDiagnosticTrace trace, string param0)
 {
     WcfEventSource.Instance.ShipAssertExceptionMessage(param0);
 }
Beispiel #36
0
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=131, Level=verbose, Channel=Debug
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool BufferPoolAllocationIsEnabled(EtwDiagnosticTrace trace)
 {
     return WcfEventSource.Instance.BufferPoolAllocationIsEnabled();
 }
Beispiel #37
0
 private static void WriteExceptionToTraceString(XmlTextWriter xml, Exception exception, int remainingLength, int remainingAllowedRecursionDepth)
 {
     if (remainingAllowedRecursionDepth >= 1)
     {
         if (EtwDiagnosticTrace.WriteStartElement(xml, "Exception", ref remainingLength))
         {
             try
             {
                 List <Tuple <string, string> > tuples = new List <Tuple <string, string> >();
                 tuples.Add(new Tuple <string, string>("ExceptionType", DiagnosticTraceBase.XmlEncode(exception.GetType().AssemblyQualifiedName)));
                 tuples.Add(new Tuple <string, string>("Message", DiagnosticTraceBase.XmlEncode(exception.Message)));
                 tuples.Add(new Tuple <string, string>("StackTrace", DiagnosticTraceBase.XmlEncode(DiagnosticTraceBase.StackTraceString(exception))));
                 tuples.Add(new Tuple <string, string>("ExceptionString", DiagnosticTraceBase.XmlEncode(exception.ToString())));
                 IList <Tuple <string, string> > tuples1 = tuples;
                 Win32Exception win32Exception           = exception as Win32Exception;
                 if (win32Exception != null)
                 {
                     int nativeErrorCode = win32Exception.NativeErrorCode;
                     tuples1.Add(new Tuple <string, string>("NativeErrorCode", nativeErrorCode.ToString("X", CultureInfo.InvariantCulture)));
                 }
                 foreach (Tuple <string, string> tuple in tuples1)
                 {
                     if (EtwDiagnosticTrace.WriteXmlElementString(xml, tuple.Item1, tuple.Item2, ref remainingLength))
                     {
                         continue;
                     }
                     return;
                 }
                 if (exception.Data != null && exception.Data.Count > 0)
                 {
                     string exceptionData = EtwDiagnosticTrace.GetExceptionData(exception);
                     if (exceptionData.Length < remainingLength)
                     {
                         xml.WriteRaw(exceptionData);
                         remainingLength = remainingLength - exceptionData.Length;
                     }
                 }
                 if (exception.InnerException != null)
                 {
                     string innerException = EtwDiagnosticTrace.GetInnerException(exception, remainingLength, remainingAllowedRecursionDepth - 1);
                     if (!string.IsNullOrEmpty(innerException) && innerException.Length < remainingLength)
                     {
                         xml.WriteRaw(innerException);
                     }
                 }
             }
             finally
             {
                 xml.WriteEndElement();
             }
             return;
         }
         else
         {
             return;
         }
     }
     else
     {
         return;
     }
 }
Beispiel #38
0
 /// <summary>
 /// Gets trace definition like: Pool allocating {0} Bytes.
 /// Event description ID=131, Level=verbose, Channel=Debug
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="Size">Parameter 0 for event: Pool allocating {0} Bytes.</param>
 internal static void BufferPoolAllocation(EtwDiagnosticTrace trace, int Size)
 {
     WcfEventSource.Instance.BufferPoolAllocation(Size);
 }
 static bool IsEtwEventEnabled(EtwDiagnosticTrace trace, int eventIndex)
 {
     if (trace.IsEtwProviderEnabled)
     {
         EnsureEventDescriptors();
         return trace.IsEtwEventEnabled(ref eventDescriptors[eventIndex]);
     }
     return false;
 }
 /// <summary>
 /// Check if trace definition is enabled
 /// Event description ID=110, Level=Warning, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 internal static bool CustomTrackingRecordWarningIsEnabled(EtwDiagnosticTrace trace)
 {
     return EtwTrackingParticipantTrackRecords.IsEtwEventEnabled(trace, 7);
 }
        public TracePayload GetSerializedPayload(object source, TraceRecord traceRecord, Exception exception, bool getServiceReference)
        {
            string eventSource         = null;
            string extendedData        = null;
            string serializedException = null;

            if (source != null)
            {
                eventSource = CreateSourceString(source);
            }

            if (traceRecord != null)
            {
                StringBuilder sb = StringBuilderPool.Take();
                try
                {
                    using (StringWriter stringWriter = new StringWriter(sb, CultureInfo.CurrentCulture))
                    {
                        using (XmlTextWriter writer = new XmlTextWriter(stringWriter))
                        {
                            writer.WriteStartElement(DiagnosticStrings.ExtendedDataTag);
                            traceRecord.WriteTo(writer);
                            writer.WriteEndElement();
                            writer.Flush();
                            stringWriter.Flush();

                            extendedData = sb.ToString();
                        }
                    }
                }
                finally
                {
                    StringBuilderPool.Return(sb);
                }
            }

            if (exception != null)
            {
                // We want to keep the ETW trace message to under 32k. So we keep the serialized exception to under 28k bytes.
                serializedException = ExceptionToTraceString(exception, MaxExceptionStringLength);
            }

            if (getServiceReference && (EtwDiagnosticTrace.traceAnnotation != null))
            {
                return(new TracePayload(serializedException, eventSource, DiagnosticTraceBase.AppDomainFriendlyName, extendedData, EtwDiagnosticTrace.traceAnnotation()));
            }

            return(new TracePayload(serializedException, eventSource, DiagnosticTraceBase.AppDomainFriendlyName, extendedData, string.Empty));
        }
 /// <summary>
 /// Gets trace definition like: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}
 /// Event description ID=104, Level=Informational, Channel=Analytic
 /// </summary>
 /// <param name="trace">The trace provider</param>
 /// <param name="eventTraceActivity">The event trace activity</param>
 /// <param name="InstanceId">Parameter 0 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="RecordNumber">Parameter 1 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="EventTime">Parameter 2 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="Name">Parameter 3 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="ActivityId">Parameter 4 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="ActivityInstanceId">Parameter 5 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="ActivityTypeName">Parameter 6 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="ChildActivityName">Parameter 7 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="ChildActivityId">Parameter 8 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="ChildActivityInstanceId">Parameter 9 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="ChildActivityTypeName">Parameter 10 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="Annotations">Parameter 11 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="ProfileName">Parameter 12 for event: TrackRecord = ActivityScheduledRecord, InstanceID = {0},  RecordNumber = {1}, EventTime = {2}, Name = {3}, ActivityId = {4}, ActivityInstanceId = {5}, ActivityTypeName = {6}, ChildActivityName = {7}, ChildActivityId = {8}, ChildActivityInstanceId = {9}, ChildActivityTypeName ={10}, Annotations={11}, ProfileName = {12}</param>
 /// <param name="reference">Reference (e.g. service reference) to be added to trace</param>
 internal static bool ActivityScheduledRecord(
             EtwDiagnosticTrace trace, 
             System.Runtime.Diagnostics.EventTraceActivity eventTraceActivity, 
             System.Guid InstanceId, 
             long RecordNumber, 
             long EventTime, 
             string Name, 
             string ActivityId, 
             string ActivityInstanceId, 
             string ActivityTypeName, 
             string ChildActivityName, 
             string ChildActivityId, 
             string ChildActivityInstanceId, 
             string ChildActivityTypeName, 
             string Annotations, 
             string ProfileName, 
             string reference)
 {
     bool etwTraceResult = true;
     TracePayload payload = trace.GetSerializedPayload(null, null, null);
     if (EtwTrackingParticipantTrackRecords.IsEtwEventEnabled(trace, 0))
     {
         etwTraceResult = EtwTrackingParticipantTrackRecords.WriteEtwEvent(trace, 0, eventTraceActivity, InstanceId, RecordNumber, EventTime, Name, ActivityId, ActivityInstanceId, ActivityTypeName, ChildActivityName, ChildActivityId, ChildActivityInstanceId, ChildActivityTypeName, Annotations, ProfileName, reference, payload.AppDomainFriendlyName);
     }
     return etwTraceResult;
 }
Beispiel #43
0
 private static void EnsureEtwProviderInitialized()
 {
     if (null == FxTrace.s_diagnosticTrace)
     {
         lock (FxTrace.s_lockObject)
         {
             if (null == FxTrace.s_diagnosticTrace)
             {
                 FxTrace.s_diagnosticTrace = InitializeTracing();
             }
         }
     }
 }
 static bool WriteEtwEvent(
             EtwDiagnosticTrace trace, 
             int eventIndex, 
             System.Runtime.Diagnostics.EventTraceActivity eventParam0, 
             System.Guid eventParam1, 
             long eventParam2, 
             long eventParam3, 
             string eventParam4, 
             string eventParam5, 
             string eventParam6, 
             string eventParam7, 
             string eventParam8, 
             string eventParam9, 
             string eventParam10, 
             string eventParam11, 
             string eventParam12, 
             string eventParam13, 
             string eventParam14)
 {
     EnsureEventDescriptors();
     return trace.EtwProvider.WriteEvent(ref eventDescriptors[eventIndex], eventParam0, eventParam1, eventParam2, eventParam3, eventParam4, eventParam5, eventParam6, eventParam7, eventParam8, eventParam9, eventParam10, eventParam11, eventParam12, eventParam13, eventParam14);
 }