我在项目中使用通用宿主模式。我需要一个记录器来专门归档Serilog之类的滚动文件。如何将其添加到主机构建器的某些记录器配置中。
在通用主机中,我们可以添加日志配置,例如调试器和控制台。但是我想使用记录器来归档特定选项。我不知道该怎么办。
哪种方法是最佳做法?
答案 0 :(得分:4)
您将需要Serilog.Extensions.Hosting。
public static IHost BuildHost(string[] args) =>
new HostBuilder()
.UseSerilog() // <- Add this line
.Build();
答案 1 :(得分:4)
感谢两个答案,我需要同时使用Serilog.Extensions.Hosting
和Serilog.Sinks.RollingFile
。然后,需要创建一个记录器对象,以便可以将其添加到主机生成器中,如下所示:
var logger = new LoggerConfiguration().WriteTo.RollingFile(
outputTemplate: outputTemplate,
restrictedToMinimumLevel: LogEventLevel.Information,
pathFormat: Path.Combine(loggingDirectory, "systemlog-{Date}.text")
.CreateLogger();
请注意,pathFormat
参数是有用且重要的。它由Serilog.Sinks.RollingFile(文件名格式说明符)中充分描述的路径和格式组成。在这里,我在路径后使用{Date}格式,这意味着:它每天创建一个文件。 Filenames
使用yyyyMMdd格式。
使用这种配置创建记录器后,需要将其添加到HostBuilder
中,如下所示:
var host = new HostBuilder()
.ConfigureLogging((context, builder) =>
{
builder.AddConsole();
builder.AddSerilog(logger);
//....<- some other option here
})
.Build();