Почему я могу уничтожать только анонимные типы? - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь настроить веб-API ASP. NET Core 3.1 для тестирования стека elk с использованием Serilog v2.9 и Serilog.Sinks.Elasticsearch v8.0.1. Это все ново для меня, и я просто пытаюсь разобраться. Кажется, у меня все работает, и я могу записывать простые вещи весь день и видеть их как в ES, так и в Kibana. Проблема в том, что я не могу ничего разрушить, кроме анонимных типов. Для иллюстрации:

var data = new
{
    SampleData = "Hello World!"
};

_logger.LogInformation("Destructured anonymous object: {@data}", data);

Создает ожидаемый результат. Хорошая блестящая запись в журнале с объектом "data", сериализованная отлично. Принимая во внимание:

var test = new TestClass
{
    Guid = Guid.NewGuid(),
    Timestamp = DateTime.UtcNow,
    Title = "Testing this serialization!"
};

_logger.LogInformation("Destructred discrete type.  {@test}", test);

Ничего не производит вообще. Не исключение, нет записи в ElasticSearch. Ничего. TestClass - это простой класс, имеющий только те 3 свойства, которые должны сериализоваться очень хорошо. Я не могу понять это. Вот моя конфигурация Logger:

Log.Logger = new LoggerConfiguration()
   .Enrich.FromLogContext()
   .Enrich.WithExceptionDetails()
   .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(elasticUri))
   {
       AutoRegisterTemplate = true,
       AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6,
       CustomFormatter = new ExceptionAsObjectJsonFormatter(renderMessage: true)
   })
   .CreateLogger();

Что мне не хватает? Я должен любить, производить карту свойств или что-то, чтобы разрушить неанонимные объекты? . Net Core 3.1 слишком новый? Я в недоумении. Каждый пример, который я видел онлайн, говорит, что это должно работать.

1 Ответ

0 голосов
/ 26 февраля 2020

Я наконец-то понял это после того, как несколько часов ударился головой о проблему. Моя проблема в том, что я использовал простой старый пакет Serilog NuGet вместо Serilog.AspNetCore . Как только я установил последний, он начал работать как положено.

Welp. Я надеюсь, что это может помочь кому-то еще в моем положении, кто следует вместе с отличным руководством здесь: https://www.humankode.com/asp-net-core/logging-with-elasticsearch-kibana-asp-net-core-and-docker

...