我在 .net 框架中的 web api 中使用 serilog,并在 Web.Config 文件中添加了 serilog 配置,如下所示
<appSettings>
<add key="serilog:minimum-level" value="Information" />
<add key="serilog:using:File" value="Serilog.Sinks.File" />
<add key="serilog:write-to:File.path" value="C:\api\logs\api_log.log" />
<add key="serilog:write-to:File.formatter" value="Serilog.Formatting.Json.JsonFormatter, Serilog" />
<add key="serilog:write-to:File.rollingInterval" value="Day" />
<add key="serilog:write-to:File.fileSizeLimitBytes" value="5242880" />
<add key="serilog:write-to:File.rollOnFileSizeLimit" value="true" />
<add key="serilog:write-to:File.shared" value="true" />
</appSettings>
我已经在启动文件中注册了记录器,如下所示
private static ILogger ConfigureSerilog()
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.Add(new XmlConfigurationProvider())
.Build();
LoggerConfiguration loggerConfiguration = new LoggerConfiguration().Enrich.With(new SerilogClaimValueEnricher())
.Enrich.WithDemystifiedStackTraces()
.ReadFrom.Configuration(configuration);
Logger rootLogger = loggerConfiguration.CreateLogger();
Log.Logger = rootLogger;
return rootLogger;
}
配置对象正在获取我们在 web.config 中给出的所有值,但日志记录不起作用。但是,ReadFrom.Configuration(configuration)
如果我使用ReadFrom.AppSettings()
日志记录而不是正常工作。但我需要利用 IConfigurationRoot
这里。我错过了什么吗?
请不要XmlConfigurationProvider
是从 web.config 读取密钥的自定义类
下面是配置的调试模式状态的屏幕截图。