in BASE/src/Microsoft.ApplicationInsights/Extensibility/Implementation/RichPayloadEventSource.cs [53:293]
public void Process(ITelemetry item)
{
if (item is RequestTelemetry)
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.Requests))
{
return;
}
var telemetryItem = item as RequestTelemetry;
// Sanitize, Copying global properties is to be done before calling .Data,
// as Data returns a singleton instance, which won't be updated with changes made
// after .Data is called.
telemetryItem.FlattenIExtensionIfExists();
CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
item.Sanitize();
this.WriteEvent(
RequestTelemetry.EtwEnvelopeName,
telemetryItem.Context.InstrumentationKey,
telemetryItem.Context.SanitizedTags,
telemetryItem.Data,
telemetryItem.Context.Flags,
Keywords.Requests);
}
else if (item is TraceTelemetry)
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.Traces))
{
return;
}
var telemetryItem = item as TraceTelemetry;
telemetryItem.FlattenIExtensionIfExists();
CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
item.Sanitize();
this.WriteEvent(
TraceTelemetry.EtwEnvelopeName,
telemetryItem.Context.InstrumentationKey,
telemetryItem.Context.SanitizedTags,
telemetryItem.Data,
telemetryItem.Context.Flags,
Keywords.Traces);
}
else if (item is EventTelemetry)
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.Events))
{
return;
}
var telemetryItem = item as EventTelemetry;
telemetryItem.FlattenIExtensionIfExists();
CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
item.Sanitize();
this.WriteEvent(
EventTelemetry.EtwEnvelopeName,
telemetryItem.Context.InstrumentationKey,
telemetryItem.Context.SanitizedTags,
telemetryItem.Data,
telemetryItem.Context.Flags,
Keywords.Events);
}
else if (item is DependencyTelemetry)
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.Dependencies))
{
return;
}
var telemetryItem = item as DependencyTelemetry;
// Sanitize, Copying global properties is to be done before calling .InternalData,
// as InternalData returns a singleton instance, which won't be updated with changes made
// after .InternalData is called.
telemetryItem.FlattenIExtensionIfExists();
CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
item.Sanitize();
this.WriteEvent(
DependencyTelemetry.EtwEnvelopeName,
telemetryItem.Context.InstrumentationKey,
telemetryItem.Context.SanitizedTags,
telemetryItem.InternalData,
telemetryItem.Context.Flags,
Keywords.Dependencies);
}
else if (item is MetricTelemetry)
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.Metrics))
{
return;
}
var telemetryItem = item as MetricTelemetry;
telemetryItem.FlattenIExtensionIfExists();
CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
item.Sanitize();
this.WriteEvent(
MetricTelemetry.EtwEnvelopeName,
telemetryItem.Context.InstrumentationKey,
telemetryItem.Context.SanitizedTags,
telemetryItem.Data,
telemetryItem.Context.Flags,
Keywords.Metrics);
}
else if (item is ExceptionTelemetry)
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.Exceptions))
{
return;
}
var telemetryItem = item as ExceptionTelemetry;
telemetryItem.FlattenIExtensionIfExists();
CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
item.Sanitize();
this.WriteEvent(
ExceptionTelemetry.EtwEnvelopeName,
telemetryItem.Context.InstrumentationKey,
telemetryItem.Context.SanitizedTags,
telemetryItem.Data.Data,
telemetryItem.Context.Flags,
Keywords.Exceptions);
}
#pragma warning disable 618
else if (item is PerformanceCounterTelemetry)
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.Metrics))
{
return;
}
var telemetryItem = (item as PerformanceCounterTelemetry).Data;
telemetryItem.FlattenIExtensionIfExists();
CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
item.Sanitize();
this.WriteEvent(
MetricTelemetry.EtwEnvelopeName,
telemetryItem.Context.InstrumentationKey,
telemetryItem.Context.SanitizedTags,
telemetryItem.Data,
telemetryItem.Context.Flags,
Keywords.Metrics);
}
#pragma warning restore 618
else if (item is PageViewTelemetry)
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.PageViews))
{
return;
}
var telemetryItem = item as PageViewTelemetry;
telemetryItem.FlattenIExtensionIfExists();
CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
item.Sanitize();
this.WriteEvent(
PageViewTelemetry.EtwEnvelopeName,
telemetryItem.Context.InstrumentationKey,
telemetryItem.Context.SanitizedTags,
telemetryItem.Data,
telemetryItem.Context.Flags,
Keywords.PageViews);
}
else if (item is PageViewPerformanceTelemetry)
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.PageViewPerformance))
{
return;
}
var telemetryItem = item as PageViewPerformanceTelemetry;
telemetryItem.FlattenIExtensionIfExists();
CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
item.Sanitize();
this.WriteEvent(
PageViewPerformanceTelemetry.EtwEnvelopeName,
telemetryItem.Context.InstrumentationKey,
telemetryItem.Context.SanitizedTags,
telemetryItem.Data,
telemetryItem.Context.Flags,
Keywords.PageViewPerformance);
}
#pragma warning disable 618
else if (item is SessionStateTelemetry)
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.Events))
{
return;
}
var telemetryItem = (item as SessionStateTelemetry).Data;
telemetryItem.FlattenIExtensionIfExists();
CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
item.Sanitize();
this.WriteEvent(
EventTelemetry.EtwEnvelopeName,
telemetryItem.Context.InstrumentationKey,
telemetryItem.Context.SanitizedTags,
telemetryItem.Data,
telemetryItem.Context.Flags,
Keywords.Events);
}
else if (item is AvailabilityTelemetry)
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.Availability))
{
return;
}
var telemetryItem = item as AvailabilityTelemetry;
telemetryItem.FlattenIExtensionIfExists();
CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
item.Sanitize();
this.WriteEvent(
AvailabilityTelemetry.EtwEnvelopeName,
telemetryItem.Context.InstrumentationKey,
telemetryItem.Context.SanitizedTags,
telemetryItem.Data,
telemetryItem.Context.Flags,
Keywords.Availability);
}
else
{
if (!this.EventSourceInternal.IsEnabled(EventLevel.Verbose, Keywords.Events))
{
return;
}
item.Sanitize();
EventData telemetryData = item.FlattenTelemetryIntoEventData();
telemetryData.name = Constants.EventNameForUnknownTelemetry;
this.WriteEvent(
EventTelemetry.EtwEnvelopeName,
item.Context.InstrumentationKey,
item.Context.SanitizedTags,
telemetryData,
item.Context.Flags,
Keywords.Events);
}
}