C# 使用Serilog接收器将自定义列写入MS SQL Server
我正在尝试使用Serilog.Sinks.MSSqlServer sink将自定义列写入日志表。根据,我添加了一个C# 使用Serilog接收器将自定义列写入MS SQL Server,c#,sql-server,.net-core,serilog,C#,Sql Server,.net Core,Serilog,我正在尝试使用Serilog.Sinks.MSSqlServer sink将自定义列写入日志表。根据,我添加了一个列选项部分: "columnOptionsSection": { "additionalColumns": [ { "ColumnName": "MachineName", "DataType": "nvarchar", "DataLength": 100 } ] } 我还有“Enrich”:[“FromLogContex
列选项部分
:
"columnOptionsSection": {
"additionalColumns": [
{
"ColumnName": "MachineName",
"DataType": "nvarchar",
"DataLength": 100
}
]
}
我还有“Enrich”:[“FromLogContext”,“WithMachineName”,“WithThreadId”]
更进一步(它与文件
接收器配合得很好)
日志已写入,但MachineName
列为空@当前版本的接收器没有的AlexRiabov没有Microsoft.Extensions.Configuration支持。这与有一整节专门讨论它的文档相矛盾。他还表示,更新到最新的开发版本可以解决这个问题——但是,该版本会引发异常,因此我无法使用它
所以我的问题
Serilog.Sinks.MSSqlServer
sink是否仍在使用中?上一个主要版本似乎是在一年前发布的5.1.3-dev-00236为我工作 确保已添加环境enrichers库 我的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
}
]
}
}
}]
5.1.3-dev-00236为我工作 确保已添加环境enrichers库 我的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
}
]
}
}
}]
是的,我已经在prod中使用它好几个月了,它非常可靠。我会在您的文件中做的一个更改是增加batchPostingLimit。你不希望你的应用程序一直在写日志。我将我的记录设置为1000条或每5秒一次。我会记住这一点-我已经将它设置得非常低,用于开发目的-谢谢,我已经在prod中使用了几个月了,它非常可靠。我会在您的文件中做的一个更改是增加batchPostingLimit。你不希望你的应用程序一直在写日志。我将我的记录设置为1000条,或者每5秒一次。我会记住这一点-我已经将它设置得非常低,用于开发目的-谢谢