Using Application Insights with ILoggerFactory

后端 未结 5 1986
攒了一身酷
攒了一身酷 2020-12-31 08:44

I\'m trying to log exceptions to Application Insights. I succeeded in doing this by calling TelemetryClient.TrackException directly. However, I would like to ab

5条回答
  •  臣服心动
    2020-12-31 09:19

    I finally figured out. There are two ways to solve my issue:

    Easy way:

    I was using older versions of the Application Insights NuGets. Specifically, Microsoft.ApplicationInsights.2.2.0 and Microsoft.ApplicationInsights.AspNetCore.2.0.0.

    Once I upgrade to Microsoft.ApplicationInsights.2.4.0 and Microsoft.ApplicationInsights.AspNetCore.2.1.1, everything works as expected. You also see the LogXXX with an exception as an argument showing up as Exception, and one without an exception showing up as Trace as expected.

    Slightly more difficult way:

    For some reason, the IApplicationBuilder and IServiceProvider in Configure does not provide the correct service provider to use in AddApplicationInsights, so you need to add the provider in the ConfigureServices:

        public void ConfigureServices( IServiceCollection services )
        {
                IServiceProvider serviceProvider = services.BuildServiceProvider();
                this.LoggerFactory.AddApplicationInsights( serviceProvider, Extensions.Logging.LogLevel.Information );
                ...
        }
    

    This means that you need to save the loggerFactory from the constructor into a property/field since it's not available via dependency injection in ConfigureServices.

    What I ended up doing (probably the best solution for now in my opinion):

    Even though just doing either of the solutions above solves the problem, I decided to do both. This is because I want to be able to log error in ConfigureServices as well. Were I to put loggerFactory.UseApplicationInsights in Configure, then I would not be able to see the error in ConfigureServices on ApplicationInsights. I also prefer to see both Traces and Exceptions, a feature that only comes with the new package version.

提交回复
热议问题