Как добавить поставщик журналов ApplicationInsights в консольное приложение Framework с помощью Autofac - PullRequest
0 голосов
/ 06 августа 2020

Я работаю над консольным приложением. NET (полная структура 4.7.1), которое использует AutoFa c для целей DI.

Мы медленно переходим на. NET Core и перешли на использование абстракций ILogger, предоставляемых Microsoft.Extensions.Logging.Abstractions.

Я подключил ILogger <> и ILoggerFactory в AutoFa c, используя следующие

        private static void RegisterLogging(ContainerBuilder builder)
        {
            builder.RegisterType<LoggerFactory>().As<ILoggerFactory>().SingleInstance();
            builder.RegisterGeneric(typeof(Logger<>)).As(typeof(ILogger<>)).InstancePerDependency();
        }

Это зависит от Microsoft.Extensions.Logging - и, похоже, он работает.

Теперь я хочу подключить провайдер ведения журнала Application Insights, однако во всей документации, которую я могу найти, только упоминается, как добавить его в контейнер. NET Core DI и просматривая исходный код в различных репозиториях, я немного озадачен тем, как это сделать.

Я подумал, что смогу сделать это следующим образом: builder.RegisterType<ApplicationInsightsLoggerProvider>().As<ILoggerProvider>();

Но это зависит от IOptions<TelemetryConfiguration> telemetryConfigurationOptions и IOptions<ApplicationInsightsLoggerOptions> applicationInsightsLoggerOptions ни того, ни другого у меня нет.

Кто-нибудь сделал это или есть предложения, как sh это сделать?

1 Ответ

0 голосов
/ 06 августа 2020

Мне удалось добиться чего-то, сделав это следующим образом:

var serviceCollection = new ServiceCollection();
serviceCollection.AddLogging();
serviceCollection.AddApplicationInsightsTelemetryWorkerService();
builder.Populate(serviceCollection);

Не самое лучшее решение, но я думаю, оно позволяет мне использовать методы расширений ServiceCollection, поэтому я мог бы придется смириться с этим, если у nobdoy есть лучший ответ

...