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);