Uso de Application Insights con ILoggerFactory

Estoy intentando registrar excepciones en Application Insights. Logré hacer esto llamandoTelemetryClient.TrackException directamente. Sin embargo, me gustaría abstraerme de esto en mi código en caso de que quisiera iniciar sesión en otras plataformas en el futuro, por lo que me gustaría apegarme solo a la interfaz ILogger.

Descubrí que puedes usarILoggerFactory.AddApplicationInsights (como implementadoaquí) pero no importa lo que hice, no veo los registros que aparecen en ApplicationInsights con esto.

Abajo está mi 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 ... )
    }

Luego, trato de usar esto en mi controlador de esta manera:

    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" );
    }

Sin embargo, no veo ninguna excepción asociada con la solicitud. Si reemplazo elLogger.LogError linea conTelemetryClient.TrackException (y crea elTelemetryClient primero), luego puedo ver la excepción sin ningún problema.

No sé lo que estoy haciendo mal. ¿Alguien podría ayudar?

Respuestas a la pregunta(3)

Su respuesta a la pregunta