Asp.net web api Serilog.Sinks.MsSqlServer无法与ASP.NET Core 2.2 Web API一起使用
我遵循了文档提供的appsettings.json格式,并具有以下内容:Asp.net web api Serilog.Sinks.MsSqlServer无法与ASP.NET Core 2.2 Web API一起使用,asp.net-web-api,serilog,Asp.net Web Api,Serilog,我遵循了文档提供的appsettings.json格式,并具有以下内容: "Serilog": { "Using": [ "Serilog.Sinks.MSSqlServer", "Serilog.Sinks.File" ], "MinimumLevel": "Verbose", "Enrich": [ "FromLogCo
"Serilog": {
"Using": [ "Serilog.Sinks.MSSqlServer", "Serilog.Sinks.File" ],
"MinimumLevel": "Verbose",
"Enrich": [ "FromLogContext", "WithThreadId" ],
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Default",
"schemaName": "log",
"tableName": "LogTable",
"autoCreateSqlTable": true,
"restrictedToMinimumLevel": "Verbose",
"batchPostingLimit": 100,
"period": "0.00:00:30",
"columnOptionsSection": {
"disableTriggers": true,
"clusteredColumnstoreIndex": false,
"primaryKeyColumnName": "Id",
"addStandardColumns": [ "LogEvent" ],
"removeStandardColumns": [ "Properties" ],
"additionalColumns": [
{
"ColumnName": "Username",
"DataType": "nvarchar",
"DataLength": 250,
"AllowNull": false
}
],
"id": {
"nonClusteredIndex": true,
"DataType": "bigint"
},
"level": {
"columnName": "Level",
"storeAsEnum": false
},
"timeStamp": {
"columnName": "CreatedDate",
"convertToUtc": false
},
"message": { "columnName": "Message" },
"exception": { "columnName": "Exception" },
"messageTemplate": { "columnName": "Template" }
}
}
},
{
"Name": "File",
"Args": {
"path": "C:\\Logs\\WishesLog.txt",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": "5242880",
"outputTemplate": "{Timestamp:o} [{Level:u3}] ({Username}-{ThreadId}): {Message}{NewLine}{Exception}"
}
}
]
}
我还有下面的程序
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseSerilog((context, config) => { config.ReadFrom.Configuration(context.Configuration); })
.UseStartup<Startup>();
}
公共类程序
{
公共静态void Main(字符串[]args)
{
CreateWebHostBuilder(args.Build().Run();
}
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.useserlog((context,config)=>{config.ReadFrom.Configuration(context.Configuration);})
.UseStartup();
}
文件接收器工作正常,但不幸的是,我无法在SQL Server中获取日志条目。无法创建该表。我也没有收到任何关于数据库接收器的异常抛出。发现问题在于Serilog.Sinks.MsSqlServer的版本。使用最新的dev版本可以正确地使用json配置。当前的稳定版本5.12在json文件中进行完整配置时不起作用,但在代码中配置记录器时起作用 希望这能有所帮助。有关v5.1.3的更多信息