serilog.settings.appsettings和文件翻转间隔问题

时间:2018-10-08 18:17:45

标签: serilog

我正在使用SeriLog登录基于IdentityServer3的身份验证服务。我只是将serilog.sinks.literate插件替换为serilog.sinks.file插件,以便获得File插件提供的滚动文件功能。在启动中将File插件与以下配置代码一起使用时。 CS,它按我的预期工作。 (我仅使用RolloverInterval.Minute进行测试。部署代码时,我将切换到RolloverInterval.Day。)

Log.Logger = new LoggerConfiguration()
.WriteTo.File("E:\\Site\\AuthSvc\\Trace.log", rollingInterval: RollingInterval.Minute, retainedFileCountLimit: 10)
.CreateLogger();

正如我所说,这可以按预期工作,每分钟创建一个新文件。

现在,我正在尝试使用serilog.settings.appsettings插件在appSettings中而不是在代码中管理所有配置。所以我将上面的代码更改为:

Log.Logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.CreateLogger();

并且我在web.config appSettings中添加了以下内容:

<add key="serilog:minimum-level" value="Debug"/>
<add key="serilog:using:File" value="Serilog.Sinks.File"/>
<add key="serilog:write-to:File.path" value="E:\Site\AuthSvc\Trace.log"/>
<add key="serilog:write-to:File.rollingInterval" value="RollingInterval.Minute"/>
<add key="serilog:write-to:File.retainedFileCountLimit" value="10"/>

使用上述配置运行服务时,出现错误消息“未找到请求的值'RollingInterval.Minute'。”任何RollingInterval值都会发生类似的错误。

如果我删除了最后两个appSettings,它可以正常工作。我是在做错什么,还是appSettings插件不支持文件接收器插件的滚动文件功能?

1 个答案:

答案 0 :(得分:4)

我不确定这是否已记录(我将检查),但是在通过Serilog.Settings.AppSettings设置枚举值时,您仅指定了枚举成员名称,而没有枚举名称。

例如代替

<add key="serilog:write-to:File.rollingInterval" value="RollingInterval.Minute"/>

使用

<add key="serilog:write-to:File.rollingInterval" value="Minute"/>