Я много читал о трассировке и ведении журнала, пытаясь найти золотое правило для лучших практик в этом вопросе, но его нет. Люди говорят, что хорошие программисты производят хорошую трассировку, но говорят об этом, и это должно происходить из опыта.
Я также читал подобные вопросы здесь и через Интернет, и они на самом деле не то же самое, что я спрашиваю, или у меня нет удовлетворительного ответа, может быть, потому что в вопросах не хватает деталей.
Итак, люди говорят, что трассировка должна как бы повторять опыт отладки приложения в тех случаях, когда вы не можете подключить отладчик. Он должен предоставлять достаточно контекста, чтобы вы могли видеть, какой путь выбран в каждой контрольной точке приложения.
Углубившись, вы даже можете различить трассировку и регистрацию событий в том смысле, что «регистрация событий отличается от трассировки тем, что она фиксирует основные состояния, а не детализированный поток управления».
Теперь, скажем, я хочу выполнять свою трассировку и ведение журнала, используя только стандартные классы .NET, которые находятся в System.Diagnostics
пространстве имен. Я подумал, что класс TraceSource лучше для работы, чем статический класс Trace, потому что я хочу различать уровни трассировки и, используя класс TraceSource, я могу передать параметр, информирующий тип события, в то время как используя класс Trace, я должен использовать Trace.WriteLineIf
а затем проверять такие вещи, как SourceSwitch.TraceInformation
и SourceSwitch.TraceErrors
, и у него даже нет таких свойств, как TraceVerbose
или TraceStart
.
Имея это в виду, рассмотрите ли вы хорошую практику, чтобы сделать следующее:
- При начале метода проследите событие «Пуск», которое должно представлять одну логическую операцию или конвейер, а также строковое представление значений параметров, переданных методу.
- Отслеживание события «Информация» при вставке элемента в базу данных.
- Проследите событие «Информация» при переходе по тому или иному пути в важном операторе if / else.
- Проследите «Критическое» или «Ошибка» в блоке перехвата в зависимости от того, является ли это исправимой ошибкой.
- Отслеживание события «Стоп» при завершении выполнения метода.
А также, пожалуйста, уточните, когда лучше всего отслеживать подробные и предупреждающие типы событий. Если у вас есть примеры кода с хорошей трассировкой / ведением журнала и вы хотите поделиться им, это было бы замечательно.
Примечание. Я нашел здесь полезную информацию, но все еще не то, что мне нужно: http://msdn.microsoft.com/en-us/magazine/ff714589.aspx