如何使用Serilog与Asp.net 5(dotnet核心)登录到SQL Server

问题描述:

我设法写入到Serilog.Sinks.MSSqlServer接收器,如果我在代码(C#),启动类中配置。 但是,如果我尝试在wwwroot web.config它不起作用;如何使用Serilog与Asp.net 5(dotnet核心)登录到SQL Server

<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文件中读取值,并在启动类像再次使用C#代码:

.WriteTo.MSSqlServer(connectionString: myReadFromJsonConfigValue) ? 

ASP.NET核心配置已重新架构,并且不依赖XML的配置更多,请查询this excellent article了解有关新配置系统的介绍。

为了使用Serilog与SQL Server水槽遵循以下步骤:

第一步:更新通过在结尾处添加以下行来引用Serilog和Serilog.Sinks.MSSqlServer包project.json的依赖性部分。

"Serilog": "1.5.14", 
"Serilog.Sinks.MSSqlServer": "3.0.48" 

第2步:添加Serilog SQL服务器接收器设置成appsettings.json 更新appsettings.json文件通过在AppSettings的结尾处添加以下JSON包括所有必要的Serilog SQL服务器接收器配置。 json文件和最后一个关闭花括号之前,确保将值更新为相关的值。

"Serilog": { 
    "ConnectionString": "Server=(local);Database=serilogdemo;trusted_connection=true", 
    "TableName": "Logs" 
    } 

第3步:更新启动类配置Serilog.ILogger ASP.NET核心具有可通过内部StartupConfigureServices方法注册的服务和他们的实现而使用新的内建依赖注入特征所以添加以下部分添加ConfigureServices方法的结尾。 Dependency Injection功能提供三种类型的注册瞬态,范围单身人士对于这个问题,我已经使用辛格尔顿只是为了演示的目的。

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实例希望有帮助

+1

非常感谢你,先生,非常有用的信息。 – user3643377

+0

我遵循相同的步骤,但安装了'Serilog.Sinks.MSSqlServerCore'并添加了'loggerFactory.AddSerilog();'到启动文件中的ConfigureMethod并在控制器构造函数中传递'ILogger '。但是,仍然有事件记录在数据库中 – Coding