如果我在启动类的代码(C#)中进行配置,则设法写入Serilog.Sinks.MSSqlServer接收器。但是,如果我在wwwroot中尝试使用web.config,它将无法正常工作。
<add key="serilog:minimum-level" value="Information"/>
<add key="serilog:using:MSSqlServer" value="Serilog.Sinks.MSSqlServer" />
<add key="serilog:write-to:MSSqlServer.connectionString" value="Server=MVDV.."/>
<add key="serilog:write-to:MSSqlServer.tableName" value="Logs"/>
可能是Serilog不从那里读取配置吗?是否可以在任何地方放置此配置密钥以使其开箱即用?还是我应该创建一个json文件,然后读取值并在Startup类中再次使用C#代码,例如:
.WriteTo.MSSqlServer(connectionString: myReadFromJsonConfigValue) ?
ASP.NET Core配置已被重新架构,并且不再依赖Xml配置,请查看这篇出色的文章,以获取有关新配置系统的介绍。
为了将Serilog与SQL Server Sink一起使用,请执行以下步骤:
步骤1:通过在依赖项部分的末尾添加以下行,更新project.json以引用Serilog和Serilog.Sinks.MSSqlServer软件包。
"Serilog": "1.5.14",
"Serilog.Sinks.MSSqlServer": "3.0.48"
步骤2:将Serilog SQL Server Sink设置添加到appsettings.json中,通过在appsettings.json文件的末尾和最后一个大括号之前添加以下JSON,更新appsettings.json文件以包括所有必需的Serilog SQL Server Sink配置,确保将值更新为您的相关值。
"Serilog": {
"ConnectionString": "Server=(local);Database=serilogdemo;trusted_connection=true",
"TableName": "Logs"
}
步骤3:更新Startup类以配置Serilog.ILogger ASP.NET Core具有新的内置依赖注入功能,可通过类中的ConfigureServices
方法注册服务及其实现来使用,Startup
因此请添加以下部分,在ConfigureServices
方法末尾添加。的依赖注入功能提供三种类型的注册瞬态,作用域和辛格尔顿和这个问题,我已经用辛格尔顿只是为了演示的目的。
services.AddSingleton<Serilog.ILogger>(x=>
{
return new LoggerConfiguration().WriteTo.MSSqlServer(Configuration["Serilog:ConnectionString"], Configuration["Serilog:TableName"],autoCreateSqlTable:true).CreateLogger();
});
如您所见,可以读取appsettings.json中嵌套的JSON配置,使用Configuration
带有配置值的属性可以使用:分隔键来检索。
步骤4:获得对Serilog.ILogger的引用您可以通过将构造函数中的变量简单地添加到Serilog.ILogger中,通过建筑构造函数注入功能来获取Serilog.ILogger实例。
希望能有所帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句