.NET Core Worker Serilog 内部日志记录 Program.cs
.NET Core Worker Serilog logging inside Program.cs
在 .Net Core 3.1 worker 中,我试图在我的 Program.cs
文件中使用 serilog 进行记录。
Serilog 配置在 appsettings.json
里面,CreateHostBuilder
就像
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();
}
我已经设法在 Main class 中使用 Serilog 使用
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);
}
}
我想知道如何在 ConfigureServices
中制作 Serilog 日志。
我在 ConfigureServices
中使用过
var provider = services.BuildServiceProvider();
var logger = provider.GetService<ILogger<IHostBuilder>>();
但在那之后,我得到了多个文件 - 每个使用 F5 的调试会话两个文件,我想记录一个(每天,已配置):
我已经设法找到解决方案HERE
希望有人会发现它有用:)
在 .Net Core 3.1 worker 中,我试图在我的 Program.cs
文件中使用 serilog 进行记录。
Serilog 配置在 appsettings.json
里面,CreateHostBuilder
就像
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();
}
我已经设法在 Main class 中使用 Serilog 使用
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);
}
}
我想知道如何在 ConfigureServices
中制作 Serilog 日志。
我在 ConfigureServices
var provider = services.BuildServiceProvider();
var logger = provider.GetService<ILogger<IHostBuilder>>();
但在那之后,我得到了多个文件 - 每个使用 F5 的调试会话两个文件,我想记录一个(每天,已配置):
我已经设法找到解决方案HERE
希望有人会发现它有用:)