À l'aide de points de vue avec les ILoggerFactory

Je suis en train de consigner les exceptions à l'Application des Connaissances. J'ai réussi en faisant cela, en appelant TelemetryClient.TrackException directement. Cependant, je voudrais faire abstraction de cela dans mon code au cas où je voudrais connecter à d'autres plates-formes dans le futur, je voudrais donc en tenir à seulement le ILogger interface.

J'ai trouvé que vous pouvez utiliser ILoggerFactory.AddApplicationInsights (tel que mis en œuvre ici), mais peu importe ce que j'ai fait, je ne vois pas les journaux montrant dans ApplicationInsights avec cette.

Ci-dessous mon 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 ... )
    }

Alors, j'essaie de l'utiliser dans mon contrôleur comme ceci:

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

Cependant, je ne vois pas les exceptions associées à la demande. Si je remplace l' Logger.LogError ligne avec TelemetryClient.TrackException (et de créer de la TelemetryClient premier), ensuite, je peux voir l'exception sans aucun problème.

Je ne sais pas ce que je fais mal. Quelqu'un pourrait-il aider?

InformationsquelleAutor KangarooWest | 2017-07-10