Adding Serilog to .NET 8 apps

 Adding Serilog

 



using Serilog;


Adding Serilog to .NET Background Service

    [ExcludeFromCodeCoverage]
    public static class Program
    {
        public static void Main(string[] args)
        {
            try
            {
                var builder = Host.CreateApplicationBuilder(args);
                builder.Services.AddDependencies();
                builder.Services.AddSerilog((services, loggerConfiguration) => 
                  loggerConfiguration
                    .ReadFrom.Configuration(builder.Configuration)
                    .Enrich.WithMachineName()
                    .Enrich.WithProcessId()
                    .Enrich.FromLogContext());

                IHost host = builder.Build();
                host.Run();
            }
        }
    }


Adding Serilog to API

[ExcludeFromCodeCoverage]
public static class Program
{
    public static void Main(string[] args)
    {
        IHost host = Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Api>();
            })
            .UseSerilog((context, services, configuration) => {
                configuration.ReadFrom.Configuration(context.Configuration);
                configuration.Enrich.WithMachineName();
                configuration.Enrich.WithProcessId();
                configuration.Enrich.FromLogContext();

            })
            .Build();
        host.Run();
    }
}


appSettings.json

{
  "Serilog": {
    "Using": [ "Serilog.Sinks.File" ],
    "MinimumLevel": {
      "Default": "Verbose",
      "Override": {
        "Microsoft.AspNetCore.Hosting": "Warning",
        "Microsoft.AspNetCore.HostFiltering": "Warning",
        "Microsoft.AspNetCore.Mvc": "Warning",
        "Microsoft.AspNetCore.Routing": "Information",
        "Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware": "Warning",
        "Microsoft.AspNetCore.Routing.Matching.DfaMatcher": "Warning",
        "Microsoft.AspNetCore.Server.Kestrel": "Warning",
        "Microsoft.AspNetCore.Server.Kestrel.Https.Internal.HttpsConnectionMiddleware": "Warning",
        "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets": "Warning",
        "Microsoft.Extensions.Hosting": "Warning",
        "Microsoft.Hosting.Lifetime": "Warning"
      }
    },
    "WriteTo": [
      {
        "Name": "File",
        "Args": {
          "path": "logs/WorkerService.log",
          "shared": "true",
          "rollingInterval": "Day",
          "rollOnFileSizeLimit": true,
          "fileSizeLimitBytes": "1048576",
          "retainedFileCountLimit": 14,
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{SourceContext:l}] [{Level:u3}] {Message:lj}{NewLine}{Exception}"
        }
      }
    ],
    "Enrich": [ "FromLogContext" ],
    "Properties": {
      "Application": "WorkerService"
    }
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  }
}

PS - Change WorkerService to whatever you want.

Add Logs folder

Add logs folder to focal project


For Logging to App Event Viewer


In Program.cs, after var host = builder.Build():

Log.Logger = new LoggerConfiguration()
    .WriteTo.EventLog("XXXXXX", manageEventSource: true)
    .CreateLogger();
Log.Information("Hello, Windows Event Log!");



Comments

Popular posts from this blog

Upgrading to .NET8 from desktop versions 4.8.X

JSON Web Tokens

GHL > Set website so shorter URL address