In .Net Core 3.1 worker I am trying to log using serilog inside my Program.cs
file. Serilog config is inside appsettings.json
, and CreateHostBuilder
is like
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureHostConfiguration(builder =>
{
builder.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
builder.AddJsonFile("appsettings.Development.json", optional: true);
})
.UseSerilog((hostContext, loggerConfig) => {
loggerConfig.ReadFrom.Configuration(hostContext.Configuration);
})
.ConfigureServices((hostContext, services) =>
{
// configuring some services here, and I want to log message to serilog
})
.UseWindowsService();
}
I have managed to use Serilog inside Main class using
public static void Main(string[] args)
{
// CreateHostBuilder(args).Build().Run(); // inital code
var host = CreateHostBuilder(args).Build();
// get logger instance
var logger = host.Services.GetService<ILogger<Program>>();
try
{
logger.LogInformation("Worker started succesfully.");
host.Run();
}
catch (Exception ex)
{
logger.LogCritical(ex, "Starting worker failed!");
Environment.Exit(160);
}
}
I would like to know how is it possible to make Serilog logs inside ConfigureServices
. I have used in ConfigureServices
var provider = services.BuildServiceProvider();
var logger = provider.GetService<ILogger<IHostBuilder>>();
but after that, I am getting multiple files - two files per debugging session with F5, and I want to log to one (per day, that is configured):
I have managed to find solution HERE
Hope that someone will find it useful :)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.