skip to Main Content

In .NET 5 Startup.cs class there is Configure method which it’s inside ILoggerFactory interface is injected. See below:

     public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            loggerFactory.AddFile("Logs/mylog-{Date}.txt");

            app.UseRouting();

            app.UseAuthentication();
            app.UseAuthorization();
            
            ..........

        }

In .NET 6 how can I get the ILoggerFactory after the var app = builder.Build(); and call its AddFile() method to write logs like .NET 5 above.

3

Answers


  1. Chosen as BEST ANSWER

    Optimal Answer

    After installing Serilog.Extensions.Logging.File nuget package, writing below code:

    app.Services.GetRequiredService<ILoggerFactory>().AddFile("Logs/mylog-{Date}.txt");
    

  2. In your Program.cs file, add the following code:

    var builder = WebApplication.CreateBuilder(args);
    
    // some initialization.
    // example:
    builder.Services.AddControllers().AddNewtonsoftJson();
    
    // add logging
    builder.Services.AddLogging(logging =>
    {
        logging.ClearProviders(); // optional (clear providers already added)
        logging.AddFile("Logs/mylog-{Date}.txt")
    });
    
    Login or Signup to reply.
  3. You can do this like that:

    using (var scope = app.Services.CreateScope())

    {

    var loggerFactory = scope.ServiceProvider.GetRequiredService(typeof(ILoggerFactory));
    loggerFactory.AddFile("Logs/mylog-{Date}.txt");

    }

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search