如何使用带有 Asp.net 5 (dotnet core) 的 Serilog 登录到 SQL 服务器
How to log to SQL server using Serilog with Asp.net 5 (dotnet core)
如果我在代码 (C#) 中配置,启动 class,我设法写入 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 class 中再次使用 C# 代码,例如:
.WriteTo.MSSqlServer(connectionString: myReadFromJsonConfigValue) ?
ASP.NET 核心配置已重新架构,不再依赖于 Xml 配置,请查看 this excellent article 了解有关新配置系统的介绍。
为了将 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 文件以包括所有必需的 Serilog SQL 服务器接收器配置,方法是在 appsettings.json 文件末尾和最后一个右花括号之前添加以下 JSON,使请确保将值更新为您的相关值。
"Serilog": {
"ConnectionString": "Server=(local);Database=serilogdemo;trusted_connection=true",
"TableName": "Logs"
}
步骤 3: 更新启动 class 以配置 Serilog.ILogger
ASP.NET 核心有一个新的内置依赖注入功能,可以通过 Startup
class 中的 ConfigureServices
方法注册服务及其实现来使用,因此添加以下部分添加ConfigureServices
方法结束。 Dependency Injection 特性提供三种类型的注册 Transient , Scoped 和 Singleton 并且为此问题 我使用 Singleton 只是为了演示目的。
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
希望对您有所帮助
如果我在代码 (C#) 中配置,启动 class,我设法写入 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 class 中再次使用 C# 代码,例如:
.WriteTo.MSSqlServer(connectionString: myReadFromJsonConfigValue) ?
ASP.NET 核心配置已重新架构,不再依赖于 Xml 配置,请查看 this excellent article 了解有关新配置系统的介绍。
为了将 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 文件以包括所有必需的 Serilog SQL 服务器接收器配置,方法是在 appsettings.json 文件末尾和最后一个右花括号之前添加以下 JSON,使请确保将值更新为您的相关值。
"Serilog": {
"ConnectionString": "Server=(local);Database=serilogdemo;trusted_connection=true",
"TableName": "Logs"
}
步骤 3: 更新启动 class 以配置 Serilog.ILogger
ASP.NET 核心有一个新的内置依赖注入功能,可以通过 Startup
class 中的 ConfigureServices
方法注册服务及其实现来使用,因此添加以下部分添加ConfigureServices
方法结束。 Dependency Injection 特性提供三种类型的注册 Transient , Scoped 和 Singleton 并且为此问题 我使用 Singleton 只是为了演示目的。
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
希望对您有所帮助