use*_*377 4 serilog asp.net-core-mvc asp.net-core
如果我在代码(C#),Startup类中配置,我设法写入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"/>
Run Code Online (Sandbox Code Playgroud)
可能是Serilog没有从那里读取配置?是否可以放置此配置键以便将其从包装盒中读出来?或者我应该创建一个json文件然后读取值并再次使用Startup类中的C#代码:
.WriteTo.MSSqlServer(connectionString: myReadFromJsonConfigValue) ?
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
步骤2:将Serilog SQL Server Sink设置添加到appsettings.json更新appsettings.json文件以包含所有必需的Serilog SQL Server Sink配置,方法是在appsettings.json文件末尾和最后一个结束花括号之前添加以下JSON,确保将值更新为相关值.
"Serilog": {
"ConnectionString": "Server=(local);Database=serilogdemo;trusted_connection=true",
"TableName": "Logs"
}
Run Code Online (Sandbox Code Playgroud)
步骤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();
});
Run Code Online (Sandbox Code Playgroud)
如您所见,可以读取appsettings.json中嵌套的JSON配置,使用Configuration具有配置值的属性可以使用:separate键检索.
第4步:获取对Serilog.ILogger的引用您只需在控制器的构造函数中将变量添加到Serilog.ILogger,即可通过构建构造函数注入功能获取Serilog.ILogger的实例
希望有所帮助
| 归档时间: |
|
| 查看次数: |
3717 次 |
| 最近记录: |