在我的ASP.NET Core 2.1 Web API中,我将Serilog与MSSqlServerSink一起使用。如何通过使用appsettings配置默认表结构并将数据添加到这些列中?
我尝试按照文档示例设置值,但没有错误。就像忽略设置一样。我知道正在读取设置,因为其中一些正在被使用,例如表名。我已经在其他ASP.NET论坛上发布了问题,这些建议没有任何效果。我在Serilog Gitter提要上发布了问题,但没有得到答案。我确实在github问题上发帖,有人建议从最新版本升级到开发版本,但这是一个实时环境。这是appsettings.json文件中配置serilog的部分。
"Serilog": {
"Using": [ "Serilog.Sinks.MSSqlServer" ],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning"
}
},
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Server=(local);Database=ACLWebAPILogs;trusted_connection=true",
"tableName": "ACLWebAPILog",
"restrictedToMinimumLevel": "Information",
"autoCreateSqlTable": true
"columnOptionsSection": {
"disableTriggers": true,
"removeStandardColumns": [ "MessageTemplate", "Properties" ],
"additionalColumns": [
{
"ColumnName": "ControllerName",
"DataType": "nvarchar",
"AllowNull": true,
"DataLength": 50
},
{
"ColumnName": "MessageType",
"DataType": "nvarchar",
"AllowNull": true,
"DataLength": 50
}
]
}
}
}
]
}
Startup.cs的Startup构造函数中的代码具有以下行以添加日志记录系统:
// Init Serilog configuration
Log.Logger = new LoggerConfiguration()
.ReadFrom.ConfigurationSection(configuration.GetSection("Serilog"))
.CreateLogger();
在“配置”功能中,我有:
loggerFactory.AddSerilog();
我希望这会删除MessageTemplate和Properties列,并添加下面引用的两个。好像所有传递给autoCreateSqlTable的内容都将被忽略。我看过Enrichers,但他们没有做我想要的。
答案 0 :(得分:0)
将Serilog.Sinks.MSSqlServer更新为预发行的版本5.1.3-dev-00232
查看此答案以获取更多详细信息https://stackoverflow.com/a/55264488/3134112