如果我在代码(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
即可。希望有帮助