public void TraceData(TraceEventType eventType, int id, LogEntry logEntry, TraceListenerFilter traceListenerFilter)
        {
            if (!ShouldTrace(eventType))
            {
                return;
            }

            foreach (TraceListener listener in traceListenerFilter.GetAvailableTraceListeners(traceListeners))
            {
                try
                {
                    if (!listener.IsThreadSafe)
                    {
                        Monitor.Enter(listener);
                    }

                    listener.TraceData(manager, Name, eventType, id, logEntry);
                    instrumentationProvider.FireTraceListenerEntryWrittenEvent();

                    listener.Flush();
                }
                finally
                {
                    if (!listener.IsThreadSafe)
                    {
                        Monitor.Exit(listener);
                    }
                }
            }
        }
Example #2
0
        internal void TraceData(
            TraceEventType eventType,
            int id,
            LogEntry logEntry,
            TraceListenerFilter traceListenerFilter,
            TraceEventCache traceEventCache)
        {
            if (!ShouldTrace(eventType))
            {
                return;
            }

            bool isTransfer = logEntry.Severity == TraceEventType.Transfer && logEntry.RelatedActivityId != null;

            foreach (TraceListener listener in traceListenerFilter.GetAvailableTraceListeners(traceListeners))
            {
                try
                {
                    if (!listener.IsThreadSafe)
                    {
                        Monitor.Enter(listener);
                    }

                    if (!isTransfer)
                    {
                        listener.TraceData(traceEventCache, Name, eventType, id, logEntry);
                    }
                    else
                    {
                        listener.TraceTransfer(traceEventCache, Name, id, logEntry.Message, logEntry.RelatedActivityId.Value);
                    }
                    instrumentationProvider.FireTraceListenerEntryWrittenEvent();

                    if (this.AutoFlush)
                    {
                        listener.Flush();
                    }
                }
                finally
                {
                    if (!listener.IsThreadSafe)
                    {
                        Monitor.Exit(listener);
                    }
                }
            }
        }
Example #3
0
        public void TraceData(TraceEventType eventType, int id, LogEntry logEntry, TraceListenerFilter traceListenerFilter)
        {
            if (!ShouldTrace(eventType)) return;

            foreach (TraceListener listener in traceListenerFilter.GetAvailableTraceListeners(traceListeners))
            {
                try
                {
                    if (!listener.IsThreadSafe) Monitor.Enter(listener);

                    listener.TraceData(manager, Name, eventType, id, logEntry);
                    instrumentationProvider.FireTraceListenerEntryWrittenEvent();

                    listener.Flush();
                }
                finally
                {
                    if (!listener.IsThreadSafe) Monitor.Exit(listener);
                }
            }
        }
        internal void TraceData(
            TraceEventType eventType,
            int id,
            LogEntry logEntry,
            TraceListenerFilter traceListenerFilter,
            TraceEventCache traceEventCache,
            ReportTracingError reportError)
        {
            if (!ShouldTrace(eventType))
            {
                return;
            }

            bool isTransfer = logEntry.Severity == TraceEventType.Transfer && logEntry.RelatedActivityId != null;

            try
            {
                foreach (TraceListener listener in traceListenerFilter.GetAvailableTraceListeners(traceListeners))
                {
                    var asynchronousListener = listener as IAsynchronousTraceListener;
                    if (asynchronousListener == null)
                    {
                        try
                        {
                            if (!listener.IsThreadSafe)
                            {
                                Monitor.Enter(listener);
                            }

                            if (!isTransfer)
                            {
                                listener.TraceData(traceEventCache, this.Name, eventType, id, logEntry);
                            }
                            else
                            {
                                listener.TraceTransfer(traceEventCache, this.Name, id, logEntry.Message, logEntry.RelatedActivityId.Value);
                            }

                            if (this.AutoFlush)
                            {
                                listener.Flush();
                            }
                        }
                        finally
                        {
                            if (!listener.IsThreadSafe)
                            {
                                Monitor.Exit(listener);
                            }
                        }
                    }
                    else
                    {
                        if (!isTransfer)
                        {
                            asynchronousListener.TraceData(traceEventCache, this.Name, eventType, id, logEntry, reportError);
                        }
                        else
                        {
                            asynchronousListener.TraceTransfer(traceEventCache, this.Name, id, logEntry.Message, logEntry.RelatedActivityId.Value, reportError);
                        }

                        if (this.AutoFlush)
                        {
                            asynchronousListener.Flush(reportError);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                if (reportError == null)
                {
                    throw;
                }

                reportError(e, logEntry, this.name);
            }
        }
        internal void TraceData(
            TraceEventType eventType,
            int id,
            LogEntry logEntry,
            TraceListenerFilter traceListenerFilter,
            TraceEventCache traceEventCache)
        {
            if (!ShouldTrace(eventType)) return;

            bool isTransfer = logEntry.Severity == TraceEventType.Transfer && logEntry.RelatedActivityId != null;

            foreach (TraceListener listener in traceListenerFilter.GetAvailableTraceListeners(traceListeners))
            {
                try
                {
                    if (!listener.IsThreadSafe) Monitor.Enter(listener);

                    if (!isTransfer)
                    {
                        listener.TraceData(traceEventCache, Name, eventType, id, logEntry);
                    }
                    else
                    {
                        listener.TraceTransfer(traceEventCache, Name, id, logEntry.Message, logEntry.RelatedActivityId.Value);
                    }
                    instrumentationProvider.FireTraceListenerEntryWrittenEvent();

                    if (this.AutoFlush)
                    {
                        listener.Flush();
                    }
                }
                finally
                {
                    if (!listener.IsThreadSafe) Monitor.Exit(listener);
                }
            }
        }
Example #6
0
        internal void TraceData(
            TraceEventType eventType,
            int id,
            LogEntry logEntry,
            TraceListenerFilter traceListenerFilter,
            TraceEventCache traceEventCache,
            ReportTracingError reportError)
        {
            if (!ShouldTrace(eventType)) return;

            bool isTransfer = logEntry.Severity == TraceEventType.Transfer && logEntry.RelatedActivityId != null;

            try
            {
                foreach (TraceListener listener in traceListenerFilter.GetAvailableTraceListeners(traceListeners))
                {
                    var asynchronousListener = listener as IAsynchronousTraceListener;
                    if (asynchronousListener == null)
                    {
                        try
                        {
                            if (!listener.IsThreadSafe) Monitor.Enter(listener);

                            if (!isTransfer)
                            {
                                listener.TraceData(traceEventCache, this.Name, eventType, id, logEntry);
                            }
                            else
                            {
                                listener.TraceTransfer(traceEventCache, this.Name, id, logEntry.Message, logEntry.RelatedActivityId.Value);
                            }

                            if (this.AutoFlush)
                            {
                                listener.Flush();
                            }
                        }
                        finally
                        {
                            if (!listener.IsThreadSafe) Monitor.Exit(listener);
                        }
                    }
                    else
                    {
                        if (!isTransfer)
                        {
                            asynchronousListener.TraceData(traceEventCache, this.Name, eventType, id, logEntry, reportError);
                        }
                        else
                        {
                            asynchronousListener.TraceTransfer(traceEventCache, this.Name, id, logEntry.Message, logEntry.RelatedActivityId.Value, reportError);
                        }

                        if (this.AutoFlush)
                        {
                            asynchronousListener.Flush(reportError);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                if (reportError == null)
                {
                    throw;
                }

                reportError(e, logEntry, this.name);
            }
        }