如何使用 Serilog 和 Asp.net 5(dotnet core)登录到 SQL 服务器



如果我在代码(C#)中配置启动类,我设法写入Serilog.Sinks.MSSqlServer sink。但是,如果我在 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 核心配置已重新架构,不再依赖于 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 接收器设置添加到 appsettings.json通过在 appsettings.json 文件的末尾和最后一个右大括号之前添加以下 JSON,更新 appsettings.json 文件以包含所有必需的 Serilog SQL Server 接收器配置,请确保将值更新为相关值。

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

步骤 3:更新启动类以配置 Serilog.ILoggerASP.NET Core 具有新的内置依赖项注入功能,可以通过类Startup中的 ConfigureServices 方法注册服务及其实现来使用它,因此添加以下部分添加 ConfigureServices 方法的末尾。依赖注入功能提供了三种类型的注册:瞬态作用域和单例,对于这个问题,我使用单例只是为了演示目的。

services.AddSingleton<Serilog.ILogger>(x=>
{
    return new LoggerConfiguration().WriteTo.MSSqlServer(Configuration["Serilog:ConnectionString"], Configuration["Serilog:TableName"],autoCreateSqlTable:true).CreateLogger();
});

如您所见,可以使用 : 分隔键检索具有配置值的属性Configuration appsettings.json 中的嵌套 JSON 配置

第 4 步:获取对 Serilog.ILogger 的引用您可以通过构建构造函数注入功能获取Serilog.ILogger的实例,只需将控制器构造函数中的变量添加到Serilog.ILogger

即可。

希望有帮助

最新更新