Я пытаюсь настроить веб-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 слишком новый? Я в недоумении. Каждый пример, который я видел онлайн, говорит, что это должно работать.