在 Serilog.Sinks.File 的 4.x 版本中配置 RollingFile writer

Configure RollingFile writer in 4.x version of Serilog.Sinks.File

从版本 4.x 开始,RollingFile 接收器被集成到 Serilog.Sinks.File 中(据我所知)。我正在尝试通过 appSettings 之类的方式配置它,但没有显示任何日志文件...

这是一个重现。

  1. 创建新的 .NET 4.6.2 Framework 控制台应用程序
  2. Install-Package Serilog
  3. Install-Package Serilog.Sinks.File
  4. Install-Package Serilog.Settings.AppSettings
  5. 将此添加到 App.config
<appSettings>
  <add key="serilog:using:RollingFile" value="Serilog.Sinks.File" />
  <add key="serilog:write-to:RollingFile" />
  <add key="serilog:write-to:RollingFile.outputTemplate" value="{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message}{NewLine}{Exception}"/>
  <add key="serilog:write-to:RollingFile.pathFormat" value="log-{Date}.txt" />
</appSettings>
  1. 将此添加到 Program.cs 中的 Main
Log.Logger = new LoggerConfiguration().ReadFrom.AppSettings().CreateLogger();
Log.Logger.Fatal("Does it work!?");
  1. 运行啦!

之后:

如果我将 XML 中的 RollingFile 更改为 File,并将 pathFormat 更改为 path,则文件 放在预期的位置。

我做错了什么?

Wups,你现在需要在任何地方使用 write-to:File,并在 File 接收器上指定一个 rollingInterval

发现这有效:

<appSettings>
  <add key="serilog:using:File" value="Serilog.Sinks.File" />
  <add key="serilog:write-to:File" />
  <add key="serilog:write-to:File.outputTemplate" value="{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message}{NewLine}{Exception}"/>
  <add key="serilog:write-to:File.path" value="log-.txt" />
  <add key="serilog:write-to:File.rollingInterval" value="Hour" />
</appSettings>