Serilog Net Core 附加列问题



我正在使用Serilog SQL Server Sink for .NET Core 2。

我已经在Program.csStartup.cs中配置了Serilog.Logger,如下所示:

ColumnOptions columnOptions = new ColumnOptions();
columnOptions.AdditionalDataColumns = new System.Collections.Generic.List<DataColumn>();
columnOptions.AdditionalDataColumns.Add(new DataColumn() { ColumnName = "UserId", DataType = typeof(string) });            
Log.Logger = new LoggerConfiguration()               
.WriteTo.MSSqlServer("Data Source=TS-ABC\SQLExpress;Initial Catalog=XYZ;Integrated Security=True",
"ActivityLogs", columnOptions: columnOptions, autoCreateSqlTable: false, restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug)
.CreateLogger();

Sstartup.cs

services.AddSingleton<Serilog.ILogger>(x =>
{
ColumnOptions columnOptions = new ColumnOptions();
columnOptions.AdditionalDataColumns = new System.Collections.Generic.List<DataColumn>();                
columnOptions.AdditionalDataColumns.Add(new DataColumn() { ColumnName = "UserId", DataType = typeof(string) });
return new LoggerConfiguration().WriteTo.MSSqlServer(Configuration["Data:DefaultConnection:ConnectionString"], Configuration["Serilog:TableName"], autoCreateSqlTable: false, columnOptions: columnOptions, restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug).CreateLogger();
});

UserId的类型为string,允许空值。它也是活动日志表中的FK。

这就是我记录信息的方式:

Log.Information("This has properties attached");

只要添加额外的列"UserId",代码就可以正常工作。UserId列已存在于我的数据库中。

这是我可以在Visual Studio的输出窗口中看到的错误:

由于以下错误,无法将 50 个日志事件写入数据库:字典中不存在给定的键。

更新到Serilog.Sinks.MSSqlServernuget 包后,现在我收到以下错误,并且数据库中没有记录任何内容。

由于以下错误,无法将 1 个日志事件写入数据库:给定的列映射与源或目标中的任何列都不匹配。

任何解决方案,提示或解决方法将不胜感激。

.net core 的不可为空的附加列出现问题。将字段设置为可为空。

相关内容

  • 没有找到相关文章

最新更新