В общем случае
- Если вы регистрируете значения DateTime (не говоря о полях заголовка метки времени в каркасах журналирования), убедитесь, что вы записываете их в значимом формате.«ToString ()» обычно не достаточно, если вам нужна информация о Local против Utc или о миллисекундах (я использую «гггг-мм-дд ЧЧ: мм: ss.fff zzz», YMMV) * 1004 *
- Если выЗаписывать исключения, перейти к «ToString ()», а не что-нибудь еще.Может быть спорным, но посмотрите здесь по причинам.
По поводу чувствительной или подробной информации, как уже говорили другие, вы должны остерегаться.Речь идет не только о людях, которые имеют право читать ваши производственные журналы, получая больше информации, чем необходимо, а также о том, что любой злоумышленник в системе может получить ценную информацию для чрезмерно подробных журналов (именно поэтому я не буду регистрировать наборразрешений пользователей с ошибкой, которую он не получил, было предложено в другом ответе).
Это может зависеть от вашей среды или клиента, что считается чувствительным, но примеры: - Фактический пользовательввод в сообщениях об ошибках.- наборы разрешений пользователей и т. Д. - операторы SQL, особенно с фактическими параметрами - структуры запросов / ответов XML
Поиск правильной детализации регистрируемой информации - это всегда компромисс между количеством регистрируемой информации и ее производительностью.не только писать, но и производить эту информацию в коде и чувствительность этой информации.И это причина того, что любая серьезная система ведения журнала имеет "уровни" или "категории".
Вы можете регистрировать потенциально чувствительную информацию на "уровне" или "категории", которую можно включить в процессе разработки, но отключить впроизводство.Если вы действительно хотите переборщить, вы можете написать запись EventLog, когда ваше приложение обнаружит, что такое ведение журнала включено, чтобы оно не «проскальзывало» в работе.
Наконец, рассмотрите возможность использования инфраструктуры ведения журнала, котораяпозволяет изменять эти уровни или категории во время выполнения.Таким образом, вы можете включить дополнительную информацию, если это необходимо, контролируемым образом, не прерывая работу приложения или не сбрасывая ситуацию, которую вы хотели проверить, из-за необходимости сначала перезапустить приложение.