コード例 #1
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            if (!request.Headers.Contains(ServiceFabricDiagnostics.CorrelationHeaderName))
            {
                SetCorrelationHeader(request, ServiceFabricDiagnostics.GetRequestCorrelationId());
            }

            if (!request.Headers.Contains(ServiceFabricDiagnostics.RequestOriginHeaderName) && this.context != null)
            {
                SetRequestOriginHeader(request, this.context.ServiceName.ToString());
            }

            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            string origin        = GetHeaderValue(request, ServiceFabricDiagnostics.RequestOriginHeaderName);
            string correlationId = GetHeaderValue(request, ServiceFabricDiagnostics.CorrelationHeaderName);

            HttpClientEventSource.Current.HttpRequestStart(request, origin, correlationId);
            try
            {
                return(await base.SendAsync(request, cancellationToken));
            }
            catch (Exception ex)
            {
                HttpClientEventSource.Current.HttpRequestFailed(request, origin, correlationId, ex);
                throw;
            }
            finally
            {
                stopwatch.Stop();
                HttpClientEventSource.Current.HttpRequestStop(request, origin, correlationId, stopwatch.Elapsed.TotalMilliseconds);
            }
        }
コード例 #2
0
 public void ServiceMessage(ServiceContext serviceContext, string message, params object[] args)
 {
     if (this.IsEnabled())
     {
         string finalMessage = string.Format(message, args);
         ServiceMessage(
             serviceContext.ServiceName.ToString(),
             serviceContext.ServiceTypeName,
             GetReplicaOrInstanceId(serviceContext),
             serviceContext.PartitionId,
             serviceContext.CodePackageActivationContext.ApplicationName,
             serviceContext.CodePackageActivationContext.ApplicationTypeName,
             serviceContext.NodeContext.NodeName,
             ServiceFabricDiagnostics.GetRequestCorrelationId() ?? string.Empty,
             finalMessage);
     }
 }
コード例 #3
0
        public void ServiceRequestFailed(ServiceContext serviceContext, string method, string requestTypeName, string exception, string correlationId = null, string fromService = null)
        {
            string serviceName = serviceContext != null?serviceContext.ServiceName.ToString() : null;

            string serviceTypeName     = serviceContext != null ? serviceContext.ServiceTypeName : null;
            long   replicaOrInstanceId = serviceContext != null?GetReplicaOrInstanceId(serviceContext) : 0;

            Guid   partitionId         = serviceContext != null ? serviceContext.PartitionId : Guid.Empty;
            string applicationName     = serviceContext != null ? serviceContext.CodePackageActivationContext.ApplicationName : null;
            string applicationTypeName = serviceContext != null ? serviceContext.CodePackageActivationContext.ApplicationTypeName : null;

            if (correlationId == null)
            {
                correlationId = ServiceFabricDiagnostics.GetRequestCorrelationId() ?? string.Empty;
            }
            if (fromService == null)
            {
                fromService = ServiceFabricDiagnostics.GetRequestOrigin() ?? string.Empty;
            }
            ServiceRequestFailed(requestTypeName, method, exception, serviceName, serviceTypeName, replicaOrInstanceId, partitionId, applicationName, applicationTypeName, correlationId, fromService);
        }