Search code examples
c#azureasp.net-coreazure-application-insightsserilog

Using serilog with azure application insights and .Net core


Currently, I am using azure application insights directly for logging as given in this link Use latest version of Application Insight with .net core API and everything is working fine.

But I need to use the serilog for logging now with the help of azure application insight. Even I do some R&D about serilog (https://github.com/serilog/serilog-sinks-applicationinsights). But didn't get any idea. Could you please suggest me that how can we achieve that with the .Net core 3.0


Solution

  • Please follow the steps below:

    First, in stall the following packages:

    Microsoft.ApplicationInsights.AspNetCore, version 2.14.0

    Serilog.AspNetCore, version 3.2.0

    Serilog.Sinks.ApplicationInsights, version 3.1.0

    Serilog.Settings.Configuration, version 3.1.0

    In Program.cs:

    public class Program
    {     
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }
    
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                })
               .UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
                        .ReadFrom.Configuration(hostingContext.Configuration)
                        .WriteTo.ApplicationInsights(new TelemetryConfiguration{ ConnectionString = "xxxxxxxxx" },TelemetryConverter.Traces)
                 );                
    }
    

    In controller.cs:

    enter image description here

    The test result:

    enter image description here