在4.x版本的Serilog.Sinks.File

时间:2017-12-14 11:13:33

标签: c# .net serilog

RollingFile接收器从版本4.x向前滑入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
  6.    
    <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. 将其添加到Main中的Program.cs
    2.    
      Log.Logger = new LoggerConfiguration().ReadFrom.AppSettings().CreateLogger();
      Log.Logger.Fatal("Does it work!?");
      
      1. 跑吧!
      2. 之后:

        • 结果:/bin/debug
        • 中没有日志文件
        • 预期:log-{date}.txt
        • 中的某个/bin/debug文件

        如果我将XML中的RollingFile更改为FilepathFormat更改为path,则 文件会被放置在预期的位置

        我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

发现这有效:

<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>