Регистрация ведется по двум причинам:
- диагностика
- аудит
Диагностическая регистрация уже обсуждалась другими, и я не буду вдаваться в подробности. Я просто скажу, что вам следует серьезно подумать о том, что произойдет, если произойдет сбой журнала? Достаточно ли вы заботитесь о том, чтобы выбросить исключение через приложение или управлять им по-другому? Это «все зависит», но сообщения об уровне информации в журнале, вероятно, следует пропустить.
Ведение журнала аудита является бизнес-требованием. В журнале аудита фиксируются важные события в системе, и это то, чем интересуются руководство и юридические орлы. Это такие вещи, как то, кто подписал что-то, кто что сделал, и т. Д. Как системный администратор или разработчик, устраняющий неполадки в системе, вы, вероятно, только слегка заинтересованы в этом. Тем не менее, во многих случаях этот вид журналирования является абсолютно частью транзакции и должен завершиться неудачей всей транзакции, если она не может быть завершена.
Размышление о двух этих аспектах полезно для меня не только потому, что одно является «необязательным», а другое обязательным, но также потому, что в зависимости от требований мне может потребоваться реализовать их отдельно. Это может быть случай (иногда), что они оба фрукты, но один это яблоки, а другие апельсины. Как правило, единый каркас журналирования может обрабатывать и то и другое.
В большинстве серверных задач ведение журнала имеет решающее значение, поскольку администратора обычно не бывает там, когда что-то происходит, поэтому он должен проверить это по факту.
Но один парень из Google однажды сказал мне, что их серверные процессы не ведут журналирование; вместо этого они «оснащены»; это означает, что у каждого процесса есть хуки или порты (он не указал механику), где другие процессы могут блокироваться, чтобы запрашивать параметры и статистику. Это те процессы мониторинга, которые хранят много вещей в журналах, преимущество в том, что информация, которую они получают, не «открывает файл», «пишет это», «выбирает это»; они получают такие вещи, как «45 453 открытых файла», «653 клиента службы X», «средний ответ 344 мс на запрос Y»
Конечно, это другой подход, о котором я склонен помнить, присматривая за моими системами, даже если они на несколько порядков меньше.
источник
Я пришел из приложения Winforms N-Tiered, которое регистрировало все.
Это было не очень полезно.
Конечно, регистрация исключений - это здорово; но зачем регистрировать их на компьютере клиента, когда вы можете просто отправить исключение по электронной почте команде разработчиков?
Регистрация информации легко превращается в зависимость, ценность которой редко оправдывается. Для каждой ситуации, когда вы можете войти бесплатно, лучше собирать целевую информацию и отправлять ее туда, куда вам нужно.
источник
Захват информации об исключениях является обязательным, потому что она может быть очень полезна в некоторой степени. Но иногда информации об исключении недостаточно, особенно если пользователь / клиент приложения не может сообщить об ошибке с правильной информацией.
Ведение журнала ограничено только сбором информации об ошибках?
В моем случае (веб-приложение) я всегда регистрирую, какая страница посещена, когда, что они нажимают, где ip и браузер и т. Д. Я даже записываю общее время загрузки для каждого посещения страницы, чтобы я мог знать, какие страницы работают медленно и нужна оптимизация. так что я могу сказать, что я регистрируюсь как можно больше.
Сначала я понятия не имел, насколько это будет значительным. но, видимо, это очень полезно во многих вещах (кроме отладки):
Я думаю, что регистрация может стать более значимой, если мы любим копать статистическую информацию в ней.
источник
Я разработчик в компании, чьи продукты развернуты за рубежом. Когда служба поддержки спрашивает об определении проблемы, моими единственными инструментами для диагностики являются мои файлы журналов и копия базы данных клиента. Используя базу данных и мою среду разработки, у меня есть возможность воспроизвести ошибочный случай, потому что я записываю входящие данные в свой модуль и связанные действия. Если я могу воспроизвести ошибку с помощью собранных данных, я могу исправить ее с помощью отладки. Если бы у меня не было файлов журналов, мне бы пришлось зависеть от того, что заказчик или служба поддержки описали, что и в каком случае происходит (что может ввести в заблуждение).
Во-вторых, ведение журнала дает мне возможность обнаружить узкие места моего модуля на развернутом сайте, так как я регистрирую дату и время определенных действий, а затем я могу посмотреть, какое действие занимает сколько времени.
Кроме того, предположим, что наше решение состоит из 6 модулей, и я вижу журналы ошибок в моих файлах журналов о тайм-аутах базы данных. Если эти ошибки также регистрируются в 5 других модулях, вероятность того, что это проблема, связанная с сервером SQL, возрастает. Если это регистрируется только в моем модуле, то вероятность того, что мои запросы содержат ошибки, возрастает. Я думаю, что такие вещи являются полезными индикаторами.
От того, какие данные я вижу в файлах журналов, зависит от конфигурации уровня журналов. Если это новый продукт, мы устанавливаем уровень журнала «Все», чтобы собрать как можно больше данных. Но когда мы улучшаем продукт, мы можем предпочесть сохранить уровень журнала на уровне «Ошибка», чтобы регистрировать только ошибки, но не журналы уровня информации и т. Д.
источник
Регистрация полезна для информации, которую вы не можете получить другими программами:
Примечание: вы хотите по крайней мере два файла журнала.
ИНФО один всегда включен. Отладка включается при необходимости.
Напишите код регистрации, предвидя, что однажды вам может понадобиться отладить ситуацию, когда ВСЕ, что у вас есть, это файл журнала, и правильное выполнение может быть разницей между увольнением и повышением в должности.
Для дополнительной милости, пусть все вызовы функций добавляют свои параметры к любой трассировке стека, в Java с
Этот подход существенно расширяет ваш стек вызовов значениями параметров и может позволить вам анализировать ситуацию только с помощью трассировки стека и не видеть файлы журнала.
источник
Я также рекомендовал бы, чтобы все нетривиальные приложения использовали многоуровневое ведение журнала.
По причинам, указанным другими, это бесценный инструмент для решения проблем с приложением.
В некоторых случаях регистрация необходима, например, в финансовых приложениях и других доменах, для которых требуются журналы активности, для обеспечения безопасности, показателей использования и аудита.
источник
Это, безусловно, зависит от типа системы, которую вы строите.
Если вы пишете отдельное настольное приложение, такое как текстовый процессор, то вам, вероятно, не нужна регистрация.
Если вы пишете встроенную систему, то вы не можете жить без регистрации. В противном случае, когда ваше встроенное устройство зависнет, вы не поймете, почему. Вам также необходимо регистрировать, когда ваша система включает в себя несколько процессов или несколько физических машин, взаимодействующих друг с другом. Опять же, когда система зависает, вам нужно знать, какая ее часть умерла, когда и почему. Вы должны иметь возможность сравнивать журналы, чтобы определить, были ли данные переданы из одного процесса в другой. Точно так же вам нужно вести журнал всякий раз, когда ваша система должна работать в течение продолжительных периодов времени без особого непосредственного взаимодействия с пользователем.
источник
Ведение журнала всегда полезно. Но при реализации будьте внимательны, это не обязательно вы, кто будет читать журналы. Возможно, это какой-то администратор, конечный пользователь, клиент, служба поддержки ...
Так что не только регистрируйте трассировки стека, но и некоторую дополнительную информацию, которая может быть интерпретирована не разработчиками. Когда ваше приложение обслуживается некоторыми другими группами, полезно также записать некоторые уникальные коды ошибок в ваши журналы. Это может облегчить поддержку, автоматизацию, ...
Еще один момент с точки зрения администратора: подумайте о ротации журналов.
источник