Serilog into .NET 8 Worker Service

1.6k views Asked by At

In .net 7 we had IHostBuilder and the following code was working using nuget package Serilog.AspNetCore

.UseSerilog((context, config) => config.ReadFrom.Configuration(context.Configuration))
    

In .net 8 we have HostApplicationBuilder. how would we use Serilog with auto generated template?

2

There are 2 answers

0
Yazan Ati On BEST ANSWER

You have to use HostApplicationBuilder.Services object. Here is a code snippet to show you how to use SeriLog with .NET 8 worker service.

    using Serilog;

namespace WorkerService1
{
    public class Program
    {


        public static void Main(string[] args)
        {
            var builder = Host.CreateApplicationBuilder(args);

            builder.Services.AddSerilog(lc => lc
            .MinimumLevel.Debug()
            .MinimumLevel.Override("Microsoft", Serilog.Events.LogEventLevel.Information)
            .Enrich.FromLogContext()
            .WriteTo.File(Path.Join(builder.Environment.ContentRootPath, "myApp.log")));


            builder.Services.AddHostedService<Worker>();

            var host = builder.Build();
            host.Run();
        }
    }
}
0
Oliver Voutat On

Was also searching for this information. Found something in this page which helped me to find exactly what I was looking for, to use the config file:

var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddSerilog(config => { config.ReadFrom.Configuration(builder.Configuration); });
builder.Services.AddHostedService<Worker>();