在 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 之类的方式配置它,但没有显示任何日志文件...
这是一个重现。
- 创建新的 .NET 4.6.2 Framework 控制台应用程序
Install-Package Serilog
Install-Package Serilog.Sinks.File
Install-Package Serilog.Settings.AppSettings
- 将此添加到
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>
- 将此添加到
Program.cs
中的 Main
:
Log.Logger = new LoggerConfiguration().ReadFrom.AppSettings().CreateLogger();
Log.Logger.Fatal("Does it work!?");
- 运行啦!
之后:
- 结果:
/bin/debug
中没有日志文件
- 预计:
/bin/debug
中有一些 log-{date}.txt
文件
如果我将 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>
从版本 4.x 开始,RollingFile
接收器被集成到 Serilog.Sinks.File
中(据我所知)。我正在尝试通过 appSettings 之类的方式配置它,但没有显示任何日志文件...
这是一个重现。
- 创建新的 .NET 4.6.2 Framework 控制台应用程序
Install-Package Serilog
Install-Package Serilog.Sinks.File
Install-Package Serilog.Settings.AppSettings
- 将此添加到
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>
- 将此添加到
Program.cs
中的Main
:
Log.Logger = new LoggerConfiguration().ReadFrom.AppSettings().CreateLogger();
Log.Logger.Fatal("Does it work!?");
- 运行啦!
之后:
- 结果:
/bin/debug
中没有日志文件
- 预计:
/bin/debug
中有一些
log-{date}.txt
文件
如果我将 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>