Мое первое предположение, что вы не хотите писать собственный LayoutRenderer для каждого типа исключения.Причина в том, что вы, вероятно, хотите определить единый формат ведения журнала для вашего файла журнала.Например:
${date} | ${logger} | ${level} | ${message} | ${exception}
Было бы очень сложно управлять форматированием, используя множество различных LayoutRenderer для исключений.Если у вас много настраиваемых LayoutRenderers, вы можете подумать о написании отдельного настраиваемого LayoutRenderer, который сможет понять все имеющиеся у вас исключения.Или вы можете создать универсальный LayoutRenderer, который может интерпретировать любое исключение с помощью отражения.
См. Этот вопрос и ответы здесь, на SO, для некоторых идей о том, как регистрировать информацию о пользовательских исключениях в NLog.
Одна из представленных идей состоит в том, чтобы написать собственный LayoutRenderer, который использует отражение, чтобы найти свойства и значения исключения и зарегистрировать их.
Другая идея, которая не включает в себя написание дополнительного кода, заключается впопробуйте Средство визуализации исключений NLog .Один из вариантов - использовать параметр ToString (я думаю, что вы задаете его следующим образом: ${exception:tostring}
. Если ваши пользовательские исключения (и "нормальные" исключения также) предоставляют достаточно информации в их методе ToString
, этого может быть достаточно.