How to get ILoggerFactory in .net 6

Viewed 5565

In .Net5 ILoggerFactory is used as Configure function in Startup.cs as follows :

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
    //here we used loggerFactory
    loggerFactory.AddProvider(loggerprovider);
}

In .Net6 how to get it with aap or builder

var app = builder.Build();

OR

var builder = WebApplication.CreateBuilder(args);
4 Answers

To get the actual logger factory instance:

var app = builder.Build();
var lf = app.Services.GetRequiredService<ILoggerFactory>();

Applies to .net 6 web api | Program.cs

using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Log4Net.AspNetCore;

var builder = WebApplication.CreateBuilder(args);

builder.Logging.AddLog4Net();

Above worked for me in .net 6

  1. Check the log file in : \bin\Debug\net6.0 (detail message)
  2. Also in event viewer -> Windows logs -> Application (general exception)

Thanks to: https://onloupe.com/blog/does-log4net-work-on-net6/

You can Get ILoggerFactory in dotnet 6 by GetService method in Program.cs class, after builder.Build()

var loggerFactory = app.Services.GetService<ILoggerFactory>();
Related