NLog.Web.AspNetCore не форматирует объект как JSONC#

Место общения программистов C#
Ответить
Anonymous
 NLog.Web.AspNetCore не форматирует объект как JSON

Сообщение Anonymous »

Я пытаюсь зарегистрировать объекты ошибок в формате JSON в своем веб-API asp.net 9. Я следую вики-документации NLog: Структурированное ведение журнала.
У меня есть NLog.Web.AspNetCore v6.0.5 в качестве зависимости. В program.cs я вызываю UseNLog с хоста:

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

var builder = WebApplication.CreateBuilder(args);
// NLog: Setup NLog for Dependency injection
builder.Logging.ClearProviders();
builder.Host.UseNLog();
//
В моем контроллере у меня есть ILogger как переменная класса:

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

private readonly ILogger _logger;
и назначьте ему внедренный ILogger в конструкторе:

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

public MyController
(
IConfiguration configuration,
ILogger nlog,
IHttpClientFactory httpClientFactory
)
{
_configuration = configuration;
_logger = nlog;
_httpClientFactory = httpClientFactory;
}
В вызове регистратора я использую префикс @. (Контроллер использует службу HttpClient и возвращает любую ошибку.)

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

//
if (!result.IsSuccessStatusCode)
{
string respContent = await result.Content.ReadAsStringAsync();
var errorObject = JsonConvert.DeserializeObject(respContent);
//
_logger.LogError("request error: {@errorObject}", errorObject);
//
}
`nlog.config' имеет готовый макет: но запись в журнале просто выводит вызов ToString() для объекта APIError вместо того, чтобы предоставить мне представление в формате JSON.

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

2025-11-26 13:22:00.5577|0|ERROR|Client.Controllers.MyController|request error: "Client.Models.ErrorResponses.APIError"
Чего мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ct-as-json
Ответить

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

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

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

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

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