Serilog Azure EventHub Шаблон вывода Мойка json

Итак, я борюсь и пытаюсь понять это. У меня есть Serilog и использую EventHub для регистрации ошибок. Потребовалось время, чтобы найти, но мне нужно было сериализовать его в JSON, поэтому я использовал это:

logger = new LoggerConfiguration().WriteTo.Sink(new AzureEventHubSink(eventHubClient, new JsonFormatter()))
                .CreateLogger();

Отлично. Теперь, когда я пишу исключение:

logger.Error(ex, "An Error Occurred");

Это пишет это, НО исключение написано в 1 поле (большой длинный сильный).

Есть ли способ сказать SeriLog написать каждое свойство исключения в своем собственном поле (думать о нем как о таблице SQL с полями)?

Как насчет изменения outputTemplate, но все еще использующего JsonFormatter, так как нет перегрузки, чтобы принять шаблон вывода?

Я использую Stream Analytics для выполнения некоторых запросов, и это делает лучше (НАМНОГО лучше) иметь каждое свойство исключения в качестве собственного столбца поля, а не просто 1 поле со всей строкой JSON, и мне нужно выполнять перекрестные соединения с другим источник данных.

Спасибо.

1 ответ

Решение

Кажется, единственный способ - это наследовать от JsonFormatter, а затем переопределить метод WriteException и написать рассматриваемое свойство....

    WriteJsonProperty("ClassName", exception.GetType(), ref delim, output);
    WriteJsonProperty("Message", exception.Message, ref delim, output);
Другие вопросы по тегам