В сетевом базовом API рекомендуемый способ настройки параметров понимания вашего приложения - через метод AddApplicationInsightsTelemetry в коллекции служб, например,
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetry();
}
См. https://docs.microsoft.com/en-us/azure/azure-monitor/app/asp-net-core для дополнительных примеров,
Если вы посмотрите на то, что делает этот метод, он зарегистрирует ряд компонентов для вас в нижележащем контейнере, а это означает, что теперь вы можете получить доступ к объектам TelemetryClient и TelemetryConfiguration из экземпляров, созданных контейнером
Если вы хотитечтобы выполнить дополнительную настройку объекта TelemetryConfiguration, его можно добавить в метод Configure, например,
public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration config)
{
// do whatever you want to the config object here
}
. В любом коде вашей библиотеки вы должны указать, что ваш объект зависит от объекта TelemetryClient. вместо того, чтобы создавать их внутри самой библиотеки, позволяя хост-процессу вводить для вас экземпляры, например,
public class MyLibraryClass
{
TelemetryClient _telemetryClient
public MyLibraryClass(TelemetryClient telemetryClient)
{
_telemetryClient = telemetryClient;
}
public void Foo()
{
_telemetryClient.TrackTrace("Foo");
}
}
AI SDK будет буферизовать и пакетировать события телеметрии в инструментируемом процессе. Это означает, что каждое использование метода SDK, такого как TrackTrace, TrackEvent и т. Д., Не сразу приводит к HTTP-вызову конечной точки сбора. Данные передаются при заполнении буфера или прохождении интервала между буферами, в зависимости от того, что произойдет раньше,
При желании вы можете переопределить это поведение, передав флаг DeveloperMode в AddApplicationInsightsTelemetry, например,
services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions() {DeveloperMode = true});
Он будет передаваться после каждого события телеметрии, что полезно, если вы хотите получить более быструю обратную связь от ваших данных, но, очевидно, не очень эффективный способ отправки данных - не забудьте отключить его!