В производственной среде по умолчанию для ведения журналов установлено значение «INFO» (используется log4net), и на этом уровне я регистрирую достаточно информации, чтобы иметь очень хорошие шансы на диагностику любых ошибок. Так что же такое «достаточная» информация? Ну, это все зависит от вашей системы. В нашей системе я регистрирую точки входа и выхода из наиболее важных методов, включая их входные параметры и возвращаемые значения (если это не много данных). Я готов принять 5-10% накладных расходов на ведение журнала (но вы должны это измерить).
Мой предпочтительный формат такой:
Метод ввода:
-> MyMethod (1, "arg1")
Метод выхода:
<- MyMethod (1, "arg1") = true </p>
Стрелки означают, что я легко вижу, вход это или выход. Включая аргументы и возвращаемое значение, я получаю наиболее важные данные для диагностики ошибок. У меня есть только одна точка возврата из моих методов, поэтому мне не нужно беспокоиться о нескольких точках выхода для ведения журнала.
Регистрируя вход / выход из метода, я нахожу, что мне больше не нужно регистрировать - если ваш код правильно разложен на методы, это документирует поток выполнения через ваше приложение.
Не делайте ошибку, не регистрируя достаточно информации, потому что вы беспокоитесь о падении производительности - измерьте это, чтобы вы были довольны накладными расходами, но уверены, что вы регистрируете достаточно для диагностики сбоев исключительно на основе информации, которая есть в журнале. То, что вам не нужно делать, это включить регистрацию более подробно после , когда ваш клиент сообщил о сбое, и затем надеяться, что сбой возникнет снова.
Я также использую уровень ведения журнала DEBUG, который регистрирует практически все. Это используется только в dev / test или, возможно, в производстве, но только после консультации с клиентом.