В функции Azure мы делаем несколько запросов, используя класс .NET HttpClient, Azure Servicebus SDK и Azure Storage SDK - все красиво регистрируется с помощью сборки в журнале Application Insight, показывая зависимости и все!
Теперь нам, однако, хотелось бы добавить реализацию ITelemetryInitializer
, чтобы добавить несколько измерений в EventTelemetry
, записываемый упомянутыми выше SDK.
Мы начнем с создания класса, реализующегоITelemetryInitializer
interface.
public class ReferrerTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
if (telemetry is EventTelemetry)
{
// Add some code
}
}
}
Затем я создаю класс, реализующий интерфейс IWebJobsStartup
, чтобы DI вводил мой инициализатор.
[assembly: WebJobsStartup(typeof(Startup))]
namespace LoggingTest
{
public class Startup : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder)
{
builder.Services.AddSingleton<ITelemetryInitializer, ReferrerTelemetryInitializer>();
}
}
}
Примечание. У меня только класс Startup, который запускается в .NET Core 2.0 (а не в 2.1) - хотя, похоже, это открытая известная проблема 1016 *?
НО, метод Initialize
в классе инициализатора, однако, никогда не срабатывает (в ядре 2.0, после того, как я увидел, что класс Startup зарегистрировал реализацию DI ReferrerTelemetryInitializer
)?
Чего нам не хватает?