Serilog имеет удобный способ деструктурирования объектов, как показано в этом примере:
logger.Debug(exception, "This is an {Exception} text", exception);
logger.Debug(exception, "This is an {@Exception} structure", exception);
Первая строка приводит к тому, что регистратор регистрирует исключение как обычный текст (вызывая ToString()), а вторая строка заставляет журнал регистрировать свойства исключения как отдельные поля. Но как насчет этой перегрузки:
logger.Debug(exception, "This is an exception", exception);
Это принимает исключение в качестве первого аргумента и всегда записывается как строка. То, что я хотел бы сделать возможным, заключается в том, чтобы включить исключение регистрации в структурированном виде. Можно ли настроить Serilog для этого?
ОБНОВИТЬ. Я предполагаю, что этот вопрос приводит к еще одному аспекту исключений регистрации: как я могу обеспечить, чтобы сообщения были обогащены свойствами исключений (поэтому они регистрируются структурированным способом для богатых поглотителей, таких как Elasticsearch), не записывая все свойства исключения в отображаемое текстовое сообщение ( поэтому обычные текстовые журналы не заполнены огромными кучами деталей исключения).