gpt4 book ai didi

azure - 创建不带配置文件的 ApplicationInsight TelemetryConfiguration

转载 作者:行者123 更新时间:2023-12-03 02:13:02 24 4
gpt4 key购买 nike

我不知道是否可以在没有 applicationInsight.config 的情况下创建完整的 TelemetryConfiguration

我看到有 TelemetryInitializers。添加它运行良好

但没有任何配置

  • TelemetryModules(存在于配置文件中,但不存在于类中)
  • DefaultTelemetrySink.TelemetryProcessors(存在于配置文件中,但类中没有 Add 方法)

我到处搜索通过代码完成配置的示例,但没有找到任何内容。我想删除配置文件,因为我想在公共(public)库中使用 TelemetryConfiguration。并且不想在最终的库中填充许多配置文件。

我在 Debug模式下查看,发现当我从 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());
}
}

感谢您的帮助!

最佳答案

我认为你走在正确的道路上。设置遥测 channel 的方式可能略有不同:

TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.InstrumentationKey = ConfigurationManager.GetSetting(new ConfigKey("ApplicationInsightKey"));
config.TelemetryChannel = new ServerTelemetryChannel { DeveloperMode = false };

遥测模块都实现了ITelemetryModule,它定义了一个void Initialize(TelemetryConfiguration configuration)方法来连接模块:

var module = new UnhandledExceptionTelemetryModule();
module.Initialize(config);

可以使用TelemetryProcessorChainBuilder添加遥测处理器:

var builder = config.TelemetryProcessorChainBuilder;
builder.Use(next => new AdaptiveSamplingTelemetryProcessor(next));
builder.Build();

最后一步是使用配置:

var telemetryClient = new TelemetryClient(config);

关于azure - 创建不带配置文件的 ApplicationInsight TelemetryConfiguration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72691639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com