Exemplo n.º 1
0
        /// <summary>
        /// Returns an instance of a trace provider registered under the specified GUID value.
        /// </summary>
        /// <param name="providerGuid">The value uniquely identifying the trace provider.</param>
        /// <returns>An instance of the trace provider implementing the <see cref="ITraceEventProvider"/> interface, of a null reference if no providers were found with matching GUID value.</returns>
        public static ITraceEventProvider Create(Guid providerGuid)
        {
            ITraceEventProvider traceProvider = null;

            traceProviderCache.TryGetValue(providerGuid, out traceProvider);

            return(traceProvider);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Executes the custom runtime task component to process the input message and returns the result message.
        /// </summary>
        /// <param name="pContext">A reference to <see cref="Microsoft.BizTalk.Component.Interop.IPipelineContext"/> object that contains the current pipeline context.</param>
        /// <param name="pInMsg">A reference to <see cref="Microsoft.BizTalk.Message.Interop.IBaseMessage"/> object that contains the message to process.</param>
        /// <returns>A reference to the returned <see cref="Microsoft.BizTalk.Message.Interop.IBaseMessage"/> object which will contain the output message.</returns>
        public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
        {
            Guard.ArgumentNotNull(pContext, "pContext");
            Guard.ArgumentNotNull(pInMsg, "pInMsg");

            var callToken = TraceManager.PipelineComponent.TraceIn();

            if (pInMsg.BodyPart != null)
            {
                Stream messageDataStream = BizTalkUtility.EnsureSeekableStream(pInMsg, pContext);

                if (messageDataStream != null)
                {
                    try
                    {
                        XmlReaderSettings readerSettings = new XmlReaderSettings()
                        {
                            CloseInput = false, CheckCharacters = false, IgnoreComments = true, IgnoreProcessingInstructions = true, IgnoreWhitespace = true, ValidationType = ValidationType.None
                        };

                        using (XmlReader messageDataReader = XmlReader.Create(messageDataStream, readerSettings))
                        {
                            XElement            eventDataXml = XElement.Load(messageDataReader);
                            TraceEventRecord    eventRecord;
                            ITraceEventProvider traceProvider = null;

                            var traceEventRecords = eventDataXml.Descendants(XName.Get(WellKnownContractMember.MessageParameters.TraceEvents, eventDataXml.Name.Namespace.NamespaceName)).Descendants(XName.Get(traceEventRecordAttr.Name, traceEventRecordAttr.Namespace));

                            foreach (var r in traceEventRecords)
                            {
                                eventRecord   = TraceEventRecord.Create(XmlReader.Create(r.CreateReader(), readerSettings));
                                traceProvider = TraceManager.Create(eventRecord.EventSourceId);

                                if (traceProvider != null)
                                {
                                    traceProvider.TraceEvent(eventRecord);
                                }
                                else
                                {
                                    object[] parameters = new object[] { eventRecord.Message, eventRecord.EventId, eventRecord.EventSource, eventRecord.MachineName, eventRecord.ProcessName, eventRecord.ProcessId, eventRecord.ThreadId, eventRecord.DateTime.ToString("o") };
                                    TraceManager.PipelineComponent.TraceWarning(TraceLogMessages.NoTraceProviderFound, eventRecord.EventSource, String.Format(CultureInfo.InvariantCulture, Resources.TraceEventMessageFormatString, parameters));
                                }
                            }
                        }
                    }
                    finally
                    {
                        if (messageDataStream.CanSeek)
                        {
                            messageDataStream.Seek(0, SeekOrigin.Begin);
                        }
                    }
                }
            }

            TraceManager.PipelineComponent.TraceOut(callToken);
            return(pInMsg);
        }
Exemplo n.º 3
0
 static TraceManager()
 {
     customComponentTracer     = Create("CustomComponent", InstrumentationUtility.TracingProviderGuid.Default);
     pipelineComponentTracer   = Create("PipelineComponent", InstrumentationUtility.TracingProviderGuid.PipelineComponent);
     workflowComponentTracer   = Create("WorkflowComponent", InstrumentationUtility.TracingProviderGuid.WorkflowComponent);
     dataAccessComponentTracer = Create("DataAccessComponent", InstrumentationUtility.TracingProviderGuid.DataAccessComponent);
     transformComponentTracer  = Create("TransformComponent", InstrumentationUtility.TracingProviderGuid.TransformComponent);
     serviceComponentTracer    = Create("ServiceComponent", InstrumentationUtility.TracingProviderGuid.ServiceComponent);
     rulesComponentTracer      = Create("RulesComponent", InstrumentationUtility.TracingProviderGuid.RulesComponent);
     trackingComponentTracer   = Create("TrackingComponent", InstrumentationUtility.TracingProviderGuid.TrackingComponent);
     workerRoleComponentTracer = Create("WorkerRoleComponent", InstrumentationUtility.TracingProviderGuid.WorkerRoleComponent);
     cloudStorageComponent     = Create("CloudStorageComponent", InstrumentationUtility.TracingProviderGuid.CloudStorageComponent);
     debugComponentTracer      = new DebugTraceEventProvider();
 }
Exemplo n.º 4
0
        /// <summary>
        /// Returns an instance of a trace provider registered under the specified name.
        /// </summary>
        /// <param name="providerName">The name of the trace provider.</param>
        /// <returns>An instance of the trace provider implementing the <see cref="ITraceEventProvider"/> interface, of a null reference if no providers were found with matching name.</returns>
        public static ITraceEventProvider Create(string providerName)
        {
            Guard.ArgumentNotNullOrEmptyString(providerName, "providerName");

            ITraceEventProvider traceProvider = null;
            Guid providerGuid = default(Guid);

            if (traceProviderGuidToSourceMap.TryGetValue(providerName, out providerGuid))
            {
                traceProviderCache.TryGetValue(providerGuid, out traceProvider);
            }

            return(traceProvider);
        }
 static TraceManager()
 {
     customComponentTracer     = new DebugTraceEventProvider();
     pipelineComponentTracer   = new DebugTraceEventProvider();
     workflowComponentTracer   = new DebugTraceEventProvider();
     dataAccessComponentTracer = new DebugTraceEventProvider();
     transformComponentTracer  = new DebugTraceEventProvider();
     serviceComponentTracer    = new DebugTraceEventProvider();
     rulesComponentTracer      = new DebugTraceEventProvider();
     trackingComponentTracer   = new DebugTraceEventProvider();
     workerRoleComponentTracer = new DebugTraceEventProvider();
     cloudStorageComponent     = new DebugTraceEventProvider();
     debugComponentTracer      = new DebugTraceEventProvider();
     webRoleComponentTracer    = new DebugTraceEventProvider();
 }
Exemplo n.º 6
0
        /// <summary>
        /// Returns an instance of a trace provider initialized with the specified name and provider GUID.
        /// </summary>
        /// <param name="providerName">The name of the trace provider.</param>
        /// <param name="providerGuid">The value uniquely identifying the trace provider.</param>
        /// <returns>An instance of the trace provider implementing the <see cref="ITraceEventProvider"/> interface.</returns>
        public static ITraceEventProvider Create(string providerName, Guid providerGuid)
        {
            Guard.ArgumentNotNullOrEmptyString(providerName, "providerName");

            ITraceEventProvider traceProvider = null;

            if (!traceProviderCache.TryGetValue(providerGuid, out traceProvider))
            {
                lock (traceProviderCacheLock)
                {
                    if (!traceProviderCache.TryGetValue(providerGuid, out traceProvider))
                    {
                        traceProvider = new ComponentTraceEventProvider(providerName, providerGuid);

                        traceProviderCache.Add(providerGuid, traceProvider);
                        traceProviderGuidToSourceMap.Add(providerName, providerGuid);
                    }
                }
            }

            return(traceProvider);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Writes detailed information about the specified database command including command statement, its parameters and their values.
        /// </summary>
        /// <param name="traceProvider">The type which is targeted by this extension method.</param>
        /// <param name="command">The database command which will be traced.</param>
        public static void TraceCommand(this ITraceEventProvider traceProvider, IDbCommand command)
        {
            if (command != null)
            {
                traceProvider.TraceDetails(() =>
                {
                    StringBuilder traceTextBuilder = new StringBuilder();
                    traceTextBuilder.AppendFormat("EXEC {0}", command.CommandText);

                    if (command.Parameters != null)
                    {
                        foreach (var parameter in command.Parameters)
                        {
                            IDbDataParameter dataParam = parameter as IDbDataParameter;
                            bool firstPass             = true;

                            if (dataParam != null)
                            {
                                if (!firstPass)
                                {
                                    traceTextBuilder.Append(", ");
                                }
                                else
                                {
                                    traceTextBuilder.Append(" ");
                                }

                                traceTextBuilder.AppendFormat("{0}='{1}'{2}", dataParam.ParameterName, dataParam.Value != null ? dataParam.Value : "NULL", dataParam.Direction == ParameterDirection.Input ? String.Empty : " OUT");
                                firstPass = false;
                            }
                        }
                    }

                    return(traceTextBuilder.ToString());
                });
            }
        }