如何在C#

时间:2019-07-17 07:49:46

标签: c# .net-core serilog

我在项目中使用通用宿主模式。我需要一个记录器来专门归档Serilog之类的滚动文件。如何将其添加到主机构建器的某些记录器配置中。

在通用主机中,我们可以添加日志配置,例如调试器和控制台。但是我想使用记录器来归档特定选项。我不知道该怎么办。

哪种方法是最佳做法?

2 个答案:

答案 0 :(得分:4)

您将需要Serilog.Extensions.Hosting

public static IHost BuildHost(string[] args) =>
    new HostBuilder()
        .UseSerilog() // <- Add this line
        .Build();

答案 1 :(得分:4)

感谢两个答案,我需要同时使用Serilog.Extensions.HostingSerilog.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();