Я имел в виду, что в текущем SDK они только для TraceTelemetry. Возможность запуска ExceptionTelemetry будет доступна в следующих выпусках SDK.

аюсь зарегистрировать исключения в Application Insights. Мне удалось это сделать, позвонивTelemetryClient.TrackException непосредственно. Тем не менее, я хотел бы абстрагироваться от этого в своем коде на случай, если в будущем я захочу войти на другие платформы, поэтому я хотел бы придерживаться только интерфейса ILogger.

Я обнаружил, что вы можете использоватьILoggerFactory.AddApplicationInsights (как реализованоВот) но независимо от того, что я сделал, я не вижу журналы, отображаемые в ApplicationInsights с этим.

Ниже мой код:

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 ... )
    }

Затем я пытаюсь использовать это в моем контроллере следующим образом:

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

Однако я не вижу никаких исключений, связанных с запросом. Если я заменюLogger.LogError линия сTelemetryClient.TrackException (и создатьTelemetryClient сначала), потом я могу видеть исключение без каких-либо проблем.

Я не знаю, что я делаю не так. Может ли кто-нибудь помочь?

Ответы на вопрос(1)

Ваш ответ на вопрос