有没有办法通过appSetting配置配置多个Serilog RollingFiles

时间:2016-02-10 12:40:28

标签: serilog

有没有办法通过appSetting配置多个Serilog RollingFiles?

我想为信息和错误级别创建单独的日志文件。

2 个答案:

答案 0 :(得分:4)

在appsettings中配置多个日志非常简单,任务是使用过滤器。我花了差不多3个小时试图找出如何实现这个目标。

我最终做了以下事情:

Startup.cs / Global.asax.cs

Log.Logger = new LoggerConfiguration()
           .WriteTo
           .Logger(x => x.Filter
           .ByIncludingOnly(logEvent => logEvent.Level == Serilog.Events.LogEventLevel.Error)
           .ReadFrom
           .AppSettings("error"))

           .WriteTo
           .Logger(x => x.Filter
           .ByIncludingOnly(logEvent => logEvent.Level == Serilog.Events.LogEventLevel.Information)
           .ReadFrom
           .AppSettings("info")).CreateLogger()

<强>的Web.Config

<add key ="error:serilog:using:RollingFile" value="Serilog.Sinks.RollingFile"/>
<add key ="error:serilog:write-to:RollingFile.pathFormat" value="C:\log\error {Date}.txt"/>
<add key ="error:serilog:write-to:RollingFile.formatter" value="Serilog.Formatting.Json.JsonFormatter"/>

<add key ="info:serilog:using:RollingFile" value="Serilog.Sinks.RollingFile"/>
<add key ="info:serilog:write-to:RollingFile.pathFormat" value="C:\log\info {Date}.txt"/>
<add key ="info:serilog:write-to:RollingFile.formatter" value="Serilog.Formatting.Json.JsonFormatter"/>

答案 1 :(得分:3)

不直接 - 可以使用设置前缀,如:

.ReadFrom.AppSettings()
.ReadFrom.AppSettings(settingPrefix: "2")

然后添加额外的接收器,如:

<add key="2:serilog:write-to:RollingFile.pathFormat" value="..." />

将此正确地烘焙到应用程序设置配置提供程序中已经有一段时间是“TODO”。

如果可以在代码中配置接收器,那可能就是这样。