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.
CodePudding user response:
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");
}
CodePudding user response:
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")
});
CodePudding user response:
Optimal Answer
After installing Serilog.Extensions.Logging.File
nuget package, writing below code:
app.Services.GetRequiredService<ILoggerFactory>().AddFile("Logs/mylog-{Date}.txt");