我正在尝试使用Serilog.Sinks.MSSqlServer接收器将自定义列写入日志表。对于documentation,我添加了一个columnOptionsSection
:
"columnOptionsSection": {
"additionalColumns": [
{
"ColumnName": "MachineName",
"DataType": "nvarchar",
"DataLength": 100
}
]
}
而且我还有"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ]
向下移动(并且它与File
接收器配合正常)。
已写入日志,但是MachineName
列为NULL。 @AlexRiabov states没有当前版本的接收器不支持Microsoft.Extensions.Configuration
。这与整个章节都专用的文档相矛盾。他还指出,更新到最新的开发人员版本可以解决此问题-但是,该版本会引发异常,因此我无法使用它。
所以我的问题...
是否可以从appsettings.json定义自定义列以与MSSqlServer接收器一起使用?如果是这样,怎么办?
Serilog.Sinks.MSSqlServer
水槽是否仍在工作?上一个主要版本似乎已经超过一年了。
答案 0 :(得分:1)
5.1.3-dev-00236为我工作
确保您已经添加了Environmentrichers库
我的appSettings json:
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"WriteTo": [{
"Name": "MSSqlServer",
"Args": {
"connectionString": --removed--,
"schemaName": "dbo",
"tableName": "Logs",
"autoCreateSqlTable": false,
"restrictedToMinimumLevel": "Debug",
"batchPostingLimit": 5,
"period": "0.00:00:02",
"columnOptionsSection": {
"addStandardColumns": [ "LogEvent" ],
"removeStandardColumns": [ "MessageTemplate", "Properties" ],
"additionalColumns": [
{
"ColumnName": "UtcTimeStamp",
"DataType": "datetimeoffset",
"AllowNull": false
},
{
"ColumnName": "MachineName",
"DataType": "nvarchar",
"DataLength": 128,
"AllowNull": false
}
]
}
}
}]