Mithilfe von Application Insights mit ILoggerFactory

Ich versuche, melden Sie Ausnahmen von der Anwendung der Erkenntnisse. Ich habe es geschafft, dies zu tun, durch aufrufen TelemetryClient.TrackException direkt. Ich möchte jedoch zu Abstrakt, entfernt von diesem in meinem code, im Falle, ich würde wollen, um log auf andere Plattformen in der Zukunft, also würde ich gerne beibehalten, nur die ILogger-Schnittstelle.

Fand ich, dass Sie verwenden können ILoggerFactory.AddApplicationInsights (wie implementiert hier) aber egal was ich Tat, ich nicht sehen, die Protokolle, zeigt sich in ApplicationInsights mit diesem.

Unten ist mein code:

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

Dann versuche ich, diese in meinem controller wie diesem:

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

Aber ich sehe keine Ausnahmen im Zusammenhang mit der Anfrage an alle. Wenn ich ersetzen Sie den Logger.LogError Linie mit TelemetryClient.TrackException (und erstellen die TelemetryClient erste), dann sehe ich die Ausnahme, ohne Probleme.

Ich weiß nicht, was ich falsch mache. Könnte mir jemand helfen?

InformationsquelleAutor KangarooWest | 2017-07-10

Schreibe einen Kommentar