namespace Insights
{
using System.Configuration;
using System.Linq;
using System.Reflection;
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;
///
/// Version TelemetryInitializer
///
public class VersionTelemetryInitializer : ITelemetryInitializer
{
private static string version = string.Empty;
private static string tags = ConfigurationManager.AppSettings["InstrumentationTags"];
///
/// Initializes properties of the specified
/// object.
///
/// the telemetry channel
public void Initialize(ITelemetry telemetry)
{
// Application Version
telemetry.Context.Component.Version = VersionTelemetryInitializer.version;
// Environment Tags
telemetry.Context.Properties["tags"] = VersionTelemetryInitializer.tags;
}
///
/// Adds the VersionTelemetryInitializer to Microsoft.ApplicationInsights
///
public static void Configure(Assembly assembly)
{
VersionTelemetryInitializer.version = assembly.GetName().Version.ToString();
if (ConfigurationManager.AppSettings.AllKeys.Contains("InstrumentationKey") && !string.IsNullOrEmpty(ConfigurationManager.AppSettings["InstrumentationKey"]))
{
Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.TelemetryInitializers
.Add(new VersionTelemetryInitializer());
Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey =
ConfigurationManager.AppSettings["InstrumentationKey"];
}
else
{
TelemetryConfiguration.Active.DisableTelemetry = true;
}
}
}
}