使用 MSSqlServer Serilog 接收器输出 JSON
Outputting JSON with the MSSqlServer Serilog sink
如何配置 MSSqlServer Serilog 接收器以将属性输出为 JSON 而不是 XML?我尝试将 RenderedCompactJsonFormatter
传递给 LoggerConfigurationMSSqlServerExtensions.MSSqlServer()
的 formatProvider
参数,但这需要 IFormatProvider
.
您可以改用 LogEvent 列并将 Properties 对象从该列值的 JSON 中拉出。
var colOpts = new ColumnOptions();
colOpts.Store.Add(StandardColumn.LogEvent);
colOpts.Store.Remove(StandardColumn.Properties);
var log = new LoggerConfiguration()
.WriteTo.MSSqlServer(connString, "Logs",columnOptions:colOpts)
.CreateLogger();
注意,我还删除了“属性”列,以免 table 中的数据重复。
通过配置为 Serilog.Sink.MSSqlServer 使用 WriteTo Args 来完成。
"Args": {
"tableName": "TestMvcClient",
"schemaName": "dbo",
"autoCreateSqlTable": true,
"columnOptionsSection": {
"addStandardColumns": [ "LogEvent" ], /* Use JSON Column LogEvent */
"removeStandardColumns": [ "Properties" ], /* Remove XML Column Properties */
}
}
您可以在 Serilog 源中找到它和 20 多个其他设置。
https://github.com/serilog/serilog-sinks-mssqlserver#custom-property-columns
如何配置 MSSqlServer Serilog 接收器以将属性输出为 JSON 而不是 XML?我尝试将 RenderedCompactJsonFormatter
传递给 LoggerConfigurationMSSqlServerExtensions.MSSqlServer()
的 formatProvider
参数,但这需要 IFormatProvider
.
您可以改用 LogEvent 列并将 Properties 对象从该列值的 JSON 中拉出。
var colOpts = new ColumnOptions();
colOpts.Store.Add(StandardColumn.LogEvent);
colOpts.Store.Remove(StandardColumn.Properties);
var log = new LoggerConfiguration()
.WriteTo.MSSqlServer(connString, "Logs",columnOptions:colOpts)
.CreateLogger();
注意,我还删除了“属性”列,以免 table 中的数据重复。
通过配置为 Serilog.Sink.MSSqlServer 使用 WriteTo Args 来完成。
"Args": {
"tableName": "TestMvcClient",
"schemaName": "dbo",
"autoCreateSqlTable": true,
"columnOptionsSection": {
"addStandardColumns": [ "LogEvent" ], /* Use JSON Column LogEvent */
"removeStandardColumns": [ "Properties" ], /* Remove XML Column Properties */
}
}
您可以在 Serilog 源中找到它和 20 多个其他设置。
https://github.com/serilog/serilog-sinks-mssqlserver#custom-property-columns