Serilog тонет mssqlserver не записывает полностью тело ответа в базу данныхC#

Место общения программистов C#
Ответить
Гость
 Serilog тонет mssqlserver не записывает полностью тело ответа в базу данных

Сообщение Гость »


Я использую пакет Serilog.Sinks.MSSqlServer версии 5.8.0
Я использую эту конфигурацию для создания собственных столбцов

Код: Выделить всё

`var dbColumnOptions = new ColumnOptions
{
AdditionalDataColumns = new Collection
{
new DataColumn {DataType = typeof(string), ColumnName = "Controller"},
new DataColumn {DataType = typeof(string), ColumnName = "Route"},
new DataColumn {DataType = typeof(string), ColumnName = "StatusCode"},
new DataColumn {DataType = typeof(string), ColumnName = "Method"},
new DataColumn {DataType = typeof(string), ColumnName = "Request"},
new DataColumn {DataType = typeof(string), ColumnName = "Response"}

}
};
dbColumnOptions.Store.Remove(StandardColumn.Properties);
dbColumnOptions.Store.Remove(StandardColumn.MessageTemplate);
dbColumnOptions.Store.Remove(StandardColumn.LogEvent);
dbColumnOptions.TimeStamp.ConvertToUtc = true;

LoggerConfiguration loggerConfig = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.MSSqlServer(dbLogConnection, tableName, columnOptions: dbColumnOptions, schemaName: "any", autoCreateSqlTable: true);`
И я использую один DelegatingHandler для перехвата информации запроса и ответа для вызова одного API. Это мой код, в котором он пишет в SQL с помощью serilog.

Код: Выделить всё

var requestUri = string.Empty;
var httpVerb = string.Empty;
var httpStatusCode = string.Empty;
var requestBody = string.Empty;
string responseBody = string.Empty;`

requestUri = request.RequestUri.ToString();
httpVerb = request.Method.Method;

if (request.Content != null)
{
requestBody = await request.Content.ReadAsStringAsync();
}

HttpResponseMessage response = await base.SendAsync(request, cancellationToken);

httpStatusCode = ((int)response.StatusCode).ToString();

if (response.Content != null)
{
responseBody = await response.Content.ReadAsStringAsync();
}

_logger.ForContext("Controller", "Whatever")
.ForContext("Request", requestBody)
.ForContext("RouteName", requestUri)
.ForContext("HttpStatusCode", httpStatusCode)
.ForContext("HttpVerb", httpVerb)
.ForContext("Response", responseBody)
.Information("Information");
But the information about request body or response body it's always truncated, even if the column has NVarchar(max) as type.
truncated response
I don't know why is happening, if I print in the console the information about the response or request the information is not truncated, only when it wrote on the DB
The entire value of the response and request bodys


Источник: https://stackoverflow.com/questions/781 ... n-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»