Я пытаюсь включить Application Insights в консольном приложении, используя IHostedService
(на данный момент это простое консольное приложение, которое мы запускаем как WebJob, в будущем в контейнерах).
Насколько мне известно, в следующем коде пока нет расширения для глобальной регистрации Application Insights в качестве реализации ILogger
:
public static class Program
{
public static Task Main(string[] args)
{
var hostBuilder = new HostBuilder()
.ConfigureHostConfiguration(config =>
{
config.SetBasePath(Directory.GetCurrentDirectory());
config.AddJsonFile("appsettings.json", optional: false);
config.AddEnvironmentVariables();
})
.ConfigureLogging((context, logging) =>
{
logging.AddConfiguration(context.Configuration.GetSection("Logging"));
if (context.HostingEnvironment.IsDevelopment())
{
logging.AddConsole();
}
else
{
//TODO: register ApplicationInsights
}
});
return hostBuilder.RunConsoleAsync();
}
}
На данный момент я обнаружил, что потенциально я должен иметь возможность настроить все, используя пользовательскую реализацию регистратора, то есть public class ApplicationInsightsLogger : ILogger
, а затем... зарегистрировать его в контейнере, чтобы DI разрешил его.
Это правильное направление?
AppInsights
+LoggerProvider
, зарегистрированных в контейнере. Но это не очень элегантно, учитывая, что некоторые из этих функций есть вMicrosoft.ApplicationInsights.Web
. Проблема в том, что то, что нам нужно, находится в этой библиотеке, но пока не абстрагировано в отдельный пакет дляGenericHost
. - person xagon   schedule 13.09.2018