Как отформатировать отслеживание стека Исключения в C#?

Когда Исключение отображено (или более общий - когда оно преобразовывается в Строку), отслеживание стека показывают. То, что я хочу сделать, должно изменить формат путей к файлам исходного кода, показанных в такой трассировке.

Конкретно я хотел бы оставить имена файлов только (без полного пути) или показать только, что часть пути, который запускается с базового каталога проекта. Полные пути являются обычно ненужными и создают помехи целому сообщению.

Как я могу сделать это?

9
задан Dawid Ohia 3 March 2010 в 16:12
поделиться

2 ответа

Я задавал похожий вопрос, хотя и не совсем тот же, здесь: Печать информации о трассировке стека в C#.

Что вы можете сделать, так это следующее:

var trace = new System.Diagnostics.StackTrace(exception);

что дает вам объект StackTrace, который предоставляет вам всю необходимую информацию. В моем случае это было сделано для того, чтобы избежать необходимости работать с локализованным текстом исключения, но я полагаю, что вы можете использовать тот же подход для своих нужд.


Edit: Я заметил, что добавил комментарий к принятому ответу на мой вопрос, касающийся параметра "needFileInfo" в конструкторе. Я вижу этот конструктор здесь: StackTrace(Exception e, bool fNeedFileInfo), я не могу сейчас найти фактический код, но я бы предположил, что вам нужно передать true в этот аргумент. Думаю, здесь главное - эксперимент.

Другими словами, я полагаю, что код должен быть таким:

var trace = new System.Diagnostics.StackTrace(exception, true);
24
ответ дан 4 December 2019 в 08:15
поделиться

Ознакомьтесь с классом System.Diagnostics.StackFrame и методом GetFileName . Вы можете написать метод, который будет получать трассировку стека и имена исходных файлов, которые вы можете вызвать в своем обработчике исключений.

2
ответ дан 4 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: