我不知道是否有可能在没有applicationInsight.config的情况下创建完整的遥测配置
我看到有遥测初始化器。添加它工作正常
但不适用于配置
- 遥测模块(存在于配置文件中,但不存在于类中)
- DefaultTelemetrySink.TelemetryProcessors(存在于配置文件中,但类中没有Add方法)
我到处搜索通过代码完成配置的示例,但没有找到任何东西。我想去掉这个配置文件,因为我想在一个公共库中使用TelemetryConfiguration。而且不想在最终库中发布许多配置文件。
我在调试模式下查看了一下,发现当我有从nuget包中获取的配置文件时,使用**TelemetryConfiguration.CreateDefault()**获取的类与没有配置文件时获取的类之间有许多差异。这就是我提出问题的原因。
我目前所拥有的
internal class ApplicationInsightConfig
{
public TelemetryConfiguration Config { get; }
public ApplicationInsightConfig()
{
Config = TelemetryConfiguration.CreateDefault();
Config.InstrumentationKey = ConfigurationManager.GetSetting(new ConfigKey("ApplicationInsightKey"));
Config.ApplicationIdProvider = new ApplicationInsightsApplicationIdProvider();
Config.TelemetryChannel.DeveloperMode = false;
DefineTelemetryInitializers();
DefineDefaultTelemetrySink();
}
private void DefineDefaultTelemetrySink()
{
var tp = Config.DefaultTelemetrySink.TelemetryProcessors;
Config.DefaultTelemetrySink.TelemetryChannel = new ServerTelemetryChannel();
}
private void DefineTelemetryInitializers()
{
Config.TelemetryInitializers.Add(new AzureAppServiceRoleNameFromHostNameHeaderInitializer());
Config.TelemetryInitializers.Add(new HttpDependenciesParsingTelemetryInitializer());
Config.TelemetryInitializers.Add(new AzureRoleEnvironmentTelemetryInitializer());
Config.TelemetryInitializers.Add(new BuildInfoConfigComponentVersionTelemetryInitializer());
Config.TelemetryInitializers.Add(new WebTestTelemetryInitializer());
Config.TelemetryInitializers.Add(new SyntheticUserAgentTelemetryInitializer { Filters = "search|spider|crawl|Bot|Monitor|AlwaysOn" });
Config.TelemetryInitializers.Add(new ClientIpHeaderTelemetryInitializer());
Config.TelemetryInitializers.Add(new OperationNameTelemetryInitializer());
Config.TelemetryInitializers.Add(new UserTelemetryInitializer());
Config.TelemetryInitializers.Add(new AuthenticatedUserIdTelemetryInitializer());
Config.TelemetryInitializers.Add(new AccountIdTelemetryInitializer());
Config.TelemetryInitializers.Add(new SessionTelemetryInitializer());
}
}
字符串
谢谢你帮忙!
3条答案
按热度按时间pgvzfuti1#
我想你的方向是对的。设置遥测通道的方法略有不同:
字符串
遥测模块都实现了
ITelemetryModule
,它定义了一个void Initialize(TelemetryConfiguration configuration)
方法来连接模块:型
可以使用
TelemetryProcessorChainBuilder
添加遥测处理器:型
最后一步是使用配置:
型
93ze6v8z2#
类的最新版本
字符串
eyh26e7m3#
对于那些想要最终版本的人,这里是代码:
字符串
封装Nuget: