在没有配置文件的情况下创建ApplicationSight TelemetryConfiguration
I dont know if it's posssible to create full TelemetryConfiguration without applicationInsight.config
I see there are TelemetryInitializers.Add it working well
but nothing for the configs
- TelemetryModules (present in config file but not on the class)
- DefaultTelemetrySink.TelemetryProcessors (present in the config file但是,在类中没有添加方法
。我想摆脱配置文件,因为我想在公共库中使用遥控文件。并且不想在最终库中添加许多配置文件。
我以调试模式查看,并看到了使用 telemetryconfiguration.createdefault()获得的类别之间的许多差异,而当我从Nuget软件包中获得配置文件时,以及当我没有配置文件时获得的。这是我问题的原因。
我拥有的沙发
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());
}
}
谢谢您的帮助!
I dont know if it's posssible to create full TelemetryConfiguration without applicationInsight.config
I see there are TelemetryInitializers.Add it working well
but nothing for the configs
- TelemetryModules (present in config file but not on the class)
- DefaultTelemetrySink.TelemetryProcessors (present in the config file but there are no Add method in the class)
I serarched everywhere for an example of complete configuration via code but did not find anything. I want to get rid of the config file, because I want to use the TelemetryConfiguration in a common library. And don't want to pupulate many config files in end up librairies.
I looking in debug mode and seen many differences between class obtained with TelemetryConfiguration.CreateDefault() when I have the config file obtained from nuget package, and the one obtained when I have no config file. This is the reason of my question.
what I have sofar
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());
}
}
Thank you for help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为您在正确的道路上。设置遥测通道可能会稍有不同:
遥测模块所有实现
itelemetryModule
,它定义了void initialize(telemetryConfiguration configuration)
方法方法可以接线模块:远程组的过程 :使用
telemetryprocessorchainbuilder
添加了:然后,最后一步是使用配置:
I think you are on the right track. Setting the telemetry channel could be done slightly different:
Telemetry modules all implement
ITelemetryModule
, which defines avoid Initialize(TelemetryConfiguration configuration)
method to wire up the module:Telemetry processors can be added using the
TelemetryProcessorChainBuilder
:Then the final step is to use the config:
班级的最新版本
latest version of the class
对于那些想要最终版本的最终版本是代码:
软件包nuget:
For those how want te final version here is the code :
Packages Nuget :