private ApplicationInsightsActivitySender FindApplicationInsightsSender() { ApplicationInsightsActivitySender activitySender = _pipeline.Senders.FindByName <ApplicationInsightsActivitySender>( ActivityPipelineDefaults.SenderNames.DefaultApplicationInsightsSender); if (activitySender == null) { var pipeline = _pipeline as ActivityPipeline; if (pipeline != null) { try { throw new ActivityInsightsException( $"Cannot find an {nameof(ApplicationInsightsActivitySender)} with the name" + $" '{ActivityPipelineDefaults.SenderNames.DefaultApplicationInsightsSender}' in the" + $" activity pipeline. Application Insights specific functionality is not available." + $" This may be an expected result on using a custom pipeline.", detailLabels: null, detailMeasures: null); } catch (ActivityInsightsException ex) { pipeline.LogInternalError(ex); } } } return(activitySender); }
public Activity StartNewActivityWithOperation <TOperation>( string name, ActivityLogLevel logLevel, string operationId = null, string parentOperationId = null, string globalOperationId = null) where TOperation : OperationTelemetry, new() { name = ValidateActivityName(name); ApplicationInsightsActivitySender appInsightsSender = FindApplicationInsightsSender(); IDisposable operation = appInsightsSender?.StartActivityOperation <TOperation>(name, operationId, parentOperationId, globalOperationId); Activity activity = StartNewActivity(name, logLevel); activity.AssociatedOperation = operation; return(activity); }