in src/DotNetWorker.ApplicationInsights/FunctionsTelemetryModule.cs [24:67]
public void Initialize(TelemetryConfiguration configuration)
{
_telemetryClient = new TelemetryClient(configuration);
_listener = new ActivityListener
{
ShouldListenTo = source => source.Name.StartsWith(TraceConstants.FunctionsActivitySource),
ActivityStarted = activity =>
{
var dependency = _telemetryClient.StartOperation<DependencyTelemetry>(activity);
dependency.Telemetry.Type = DependencyTypeInProc; // Required for proper rendering in App Insights.
activity.SetCustomProperty(DependencyTelemetryKey, dependency);
},
ActivityStopped = activity =>
{
// Check for Exceptions events
foreach (ActivityEvent activityEvent in activity.Events)
{
TrackExceptionTelemetryFromActivityEvent(activityEvent, _telemetryClient);
}
if (activity.GetCustomProperty(DependencyTelemetryKey) is IOperationHolder<DependencyTelemetry> dependencyHolder)
{
var dependency = dependencyHolder.Telemetry;
foreach (var item in activity.Tags)
{
if (!dependency.Properties.ContainsKey(item.Key))
{
dependency.Properties[item.Key] = item.Value;
}
}
dependency.Success = activity.Status != ActivityStatusCode.Error;
_telemetryClient.StopOperation(dependencyHolder);
dependencyHolder.Dispose();
}
},
Sample = (ref ActivityCreationOptions<ActivityContext> _) => ActivitySamplingResult.AllData,
SampleUsingParentId = (ref ActivityCreationOptions<string> _) => ActivitySamplingResult.AllData
};
ActivitySource.AddActivityListener(_listener);
}