Search code examples
c#asp.net-core.net-6.0serilog

C# Serilog config in ASP.NET Core 6


I have the following in appsettings.json for Serilog:

"Serilog": {
    "Using": [],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft.AspNetCore": "Warning",
        "System": "Warning" //Amik ezekből a névterekből jönnek is Informationok lesznek.
      }
    },
    "Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
    "WriteTo": [
      { "Name": "Console" }
    ]
  },

I tried to add Serilog for my bootstrap app, but nothing worked well :(.

It is not logging to the console.


Solution

  • I have the following settings in appsettings.json for Serilog. I tried to add Serilog for my bootstrap app, but nothing worked well It is not logging into console.

    Well, its not quite clear if you have followed all the steps accordingly. Based on your shared appsettings.json it appreared that your configuration is partially correct. If you don't define anything inside using block its better to ommit that. In addition to this, you haven't defined your "Args" parameter where need to log what I mean is the path. Furthermore, whether you have install the required nuget package and included the required code snippet in your program.cs file

    Therefore, you can follow the steps below to implement it correctly.

    Prerequisite:

    1. Serilog Nuget Package
    2. appsettings.json configuration

    1. Serilog Nuget Package

    To configure Serilog for asp.net core reagrdless of its version, you need to following package in your application reference.

    serilog.aspnetcore, serilog.aspnetcore and serilog.expressions
    

    You can add from your Nuget Package Manager as following:

    enter image description here

    Once all the required package installed accordingly it should look like below:

    enter image description here

    In addititon, you even can using nuget package manager console command which are like below:

    dotnet add package serilog.aspnetcore
    dotnet add package serilog.sinks.seq
    dotnet add package serilog.expressions
    

    2. appsettings.json configuration

    Please replace your appsettings.json file as following for serilog.

    {
      "Serilog": {
        "MinimumLevel": {
          "Default": "Information",
          "Override": {
            "Microsoft": "Warning",
            "Microsoft.Hosting.Lifetime": "Information"
          }
        },
       
        "WriteTo": [
          {
            "Name": "Console",
            "Args": {
              "path": "./logs/log-.txt",
              "rollingInterval": "Day"
            }
          }
          
        ]
      },
      "AllowedHosts": "*"
    }
    

    Program.cs file

    using Serilog;
    
    
    
    Log.Logger =  new LoggerConfiguration()
        .WriteTo.Console().CreateBootstrapLogger();
    Log.Information("Staring up logging");
    
    try
    {
        var builder = WebApplication.CreateBuilder(args);
    
        builder.Host.UseSerilog((context, logConfig) => logConfig
            .WriteTo.Console()
            .ReadFrom.Configuration(context.Configuration));
    
        // Add services to the container.
    
        builder.Services.AddControllers();
        // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
        builder.Services.AddEndpointsApiExplorer();
        builder.Services.AddSwaggerGen();
    
    
    
        var app = builder.Build();
    
        // Configure the HTTP request pipeline.
        if (app.Environment.IsDevelopment())
        {
            app.UseSwagger();
            app.UseSwaggerUI();
        }
    
        app.UseSerilogRequestLogging();
        app.UseHttpsRedirection();
    
        app.UseAuthorization();
    
        app.MapControllers();
    
        app.Run();
    
    }
    catch (Exception ex)
    {
    
        Log.Fatal(ex,"Unhandled Exception");
    }
    
    finally
    {
        Log.Information("Log Complete");
        Log.CloseAndFlush();
    }
    

    Output:

    enter image description here

    Note: If you would like to know more details about logging in asp.net core you could check the official document here