При использовании Serilog.Sinks.MSSqlServer, настроенном с помощью файла JSON, метка времени отличается от формата UTC.
В коде, выполняющем эту работу:
columnOptions.TimeStamp.ConvertToUtc = true;
Как мне сделать то же самое в файле конфигурации JSON?
Вот полный текущий файл конфигурации JSON:
{
"Serilog": {
"MinimumLevel": "Verbose",
"WriteTo": [
{
"Name": "Console",
"Args": {
"restrictedToMinimumLevel": "Debug"
}
},
{
"Name": "File",
"Args": {
"path": "\\Logs\\log.log",
"rollingInterval": "Day",
"restrictedToMinimumLevel": "Error"
}
},
{
"Name": "MSSqlServer",
"Args": {
"restrictedToMinimumLevel": "Debug",
"connectionString": "XXXX",
"sinkOptions": {
"autoCreateSqlTable": true,
"tableName": "Logs"
},
"columnOptionsSection": {
"disableTriggers": true,
"clusteredColumnstoreIndex": false,
// Add an id column
"primaryKey": { "ColumnName": "Id" },
// Add the event in json for searching
"addStandardColumns": [ "LogEvent" ],
// This is the same info as the LogEvnt but in XML.
"removeStandardColumns": [ "Properties" ],
// Add a Process column
"additionalColumns": [
{
"ColumnName": "Process",
"DataType": "varchar",
"DataLength": 255
}
]
}
}
}
],
"Enrich": [ "FromLogContext" ]
}
}
Добавление UseUtcTimestamp в args.sinkOptions не работает.
"Args": {
"connectionString": "XXXX",
"sinkOptions": {
"UseUtcTimestamp": true
}
}





Это должно быть в columnOptionsSection (документации):
"columnOptionsSection": {
// ...
"timeStamp": { "columnName": "Timestamp", "convertToUtc": true },
// ...
}
Объекты и настройки JSON совпадают, но, как показывает ваш собственный код, имена имеют верблюжий регистр. Итак, не глядя на документы или ответ, я бы ожидал
"columnOptions: { "timeStamp":{ "convertToUtc": true}}... достаточно близко