Usando o Application Insights com ILoggerFactory

Estou tentando registrar exceções no Application Insights. Consegui fazer isso chamandoTelemetryClient.TrackException diretamente. No entanto, gostaria de abstrair isso no meu código, caso deseje fazer logon em outras plataformas no futuro, portanto, gostaria de manter apenas a interface do ILogger.

Eu achei que você pode usarILoggerFactory.AddApplicationInsights (conforme implementadoaqui), mas não importa o que eu fiz, não vejo os logs aparecendo no ApplicationInsights com isso.

Abaixo está o meu código:

Startup.cs

    IConfigurationRoot Configuration { get; set; }
    ILoggerFactory LoggerFactory { get; set; }
    IServiceProvider ServiceProvider { get; set; }

    public Startup( IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory )
    {
        this.LoggerFactory = loggerFactory;
        string configurationFilePath = "abc.json";

        this.Configuration = new ConfigurationBuilder()
            .SetBasePath( hostingEnvironment.ContentRootPath )
            .AddJsonFile( configurationFilePath, optional: true, reloadOnChange: true )
            .AddEnvironmentVariables()
            .Build();
    }

    public void Configure(
        IApplicationBuilder applicationBuilder,
        IHostingEnvironment hostingEnvironment,
        ILoggerFactory loggerFactory,
        IServiceProvider serviceProvider )
    {
        this.ServiceProvider = serviceProvider;
        loggerFactory.AddApplicationInsights( serviceProvider );
        applicationBuilder.UseMvc();
    }

    public void ConfigureServices( IServiceCollection services )
    {
        services.AddApplicationInsightsTelemetry( this.Configuration );
        services.AddMvc( .... // A bunch of options here ... )
    }

Então, eu tento usar isso no meu controlador assim:

    ILogger<XController> Logger { get; set; }

    public XController( ILogger<XController> logger )
    {
        this.Logger = logger;
    }

    [HttpPost]
    [Route( "v3.0/abcd" )]
    public async Task PostEvent( [FromBody] XEvent xEvent )
    {
        this.Logger.LogError( 0, new Exception( "1234" ), "1234" );
    }

No entanto, não vejo nenhuma exceção associada à solicitação. Se eu substituir oLogger.LogError alinhar comTelemetryClient.TrackException (e crie oTelemetryClient primeiro), então eu posso ver a exceção sem problemas.

Não sei o que estou fazendo de errado. Alguém poderia ajudar?

questionAnswers(3)

yourAnswerToTheQuestion