Android Log.v (), Log.d (), Log.i (), Log.w (), Log.e () – Когда использовать их?

LogCat методы LogCat :

 Log.v(); // Verbose Log.d(); // Debug Log.i(); // Info Log.w(); // Warning Log.e(); // Error 

Каковы подходящие ситуации для использования каждого типа ведения журнала? Я знаю, что, возможно, это всего лишь немного семантики, и, возможно, это не имеет LogCat значения, но для фильтрации LogCat в Android Studio и Eclipse было бы неплохо знать, что я использую правильные методы в соответствующие моменты.

Solutions Collecting From Web of "Android Log.v (), Log.d (), Log.i (), Log.w (), Log.e () – Когда использовать их?"

Пойдем в обратном порядке:

  • Log.e : Это происходит, когда происходит плохая ситуация. Используйте этот тег в таких местах, как внутри учетной записи catch. Вы знаете, что произошла ошибка, и поэтому вы регистрируете ошибку.

  • Log.w : Используйте это, когда вы подозреваете, что что-то теневое происходит. Возможно, вы не полностью входите в режим ошибок, но, возможно, вы оправились от неожиданного поведения. В принципе, используйте это для записи материалов, которые вы не ожидали, но не обязательно являются ошибкой. Как будто «эй, это случилось, и это странно, мы должны заглянуть в него».

  • Log.i : Используйте это, чтобы публиковать полезную информацию в журнале. Например: что вы успешно подключились к серверу. В основном использовать его для отчета об успехах.

  • Log.d : Используйте это для целей отладки. Если вы хотите распечатать кучу сообщений, чтобы вы могли регистрировать точный поток своей программы, используйте это. Если вы хотите сохранить журнал значений переменных, используйте это.

  • Log.v : Используйте это, если хотите, чтобы вы делали абсолютно орехи при регистрации. Если по какой-то причине вы решили регистрировать каждую мелочь в определенной части приложения, используйте тег Log.v.

И в качестве бонуса …

  • Log.wtf : Используйте это, когда все идет абсолютно, ужасно, свято-дерьмо неправильно. Вы знаете эти блоки catch, в которых вы ловите ошибки, которые вам никогда не удастся получить … да, если вы хотите их использовать, используйте Log.wtf

Различные методы являются показателями приоритета. Как вы их перечислили, они идут от наименее важного. Я думаю, что вы конкретно планируете их отлаживать журналы в своем коде, зависит от компонента или приложения, над которым вы работаете, а также от того, как Android относится к ним с разными настройками сборки (eng, userdebug и user). Я проделал огромную работу в родных демонах в Android, и именно так я это делаю. Он может не применяться непосредственно к вашему приложению, но может быть и общий язык. Если мои объяснения кажутся неопределенными, то это потому, что некоторые из них являются скорее искусством, чем наукой. Мое основное правило должно быть максимально эффективным, чтобы вы могли разумно отлаживать свой компонент, не убивая производительность системы, и всегда проверяете наличие ошибок и регистрируете их.

V – Распечатки состояния с разными интервалами или при любых событиях, происходящих с моим компонентом. Также возможно очень подробные распечатки полезных нагрузок сообщений / событий, которые мой компонент получает или отправляет.

D – Информация о незначительных событиях, которые происходят в моем компоненте, а также о полезных сообщениях / событиях, которые мой компонент получает или отправляет.

I – заголовок любых сообщений / событий, которые получает или передает мой компонент, а также любые важные части полезной нагрузки, которые имеют решающее значение для работы моего компонента.

W – все, что случается, что необычно или подозрительно, но не обязательно является ошибкой.

E – Ошибки, означающие вещи, которые не должны произойти, когда все работает так, как должно.

Самая большая ошибка, которую я вижу в людях, заключается в том, что они злоупотребляют такими вещами, как V, D и я, но никогда не использую W или E. Если ошибка, по определению, не должна произойти или должна произойти только очень редко, то это чрезвычайно Дешево для вас, чтобы регистрировать сообщение, когда оно происходит. С другой стороны, если каждый раз, когда кто-то нажимает клавишу, вы делаете Log.i (), вы злоупотребляете общим ресурсом ведения журнала. Разумеется, используйте здравый смысл и будьте осторожны с журналами ошибок для вещей вне вашего контроля (например, сетевых ошибок) или тех, которые содержатся в жестких циклах.

Может быть, плохо

 Log.i("I am here"); 

Хорошо

 Log.e("I shouldn't be here"); 

Имея это в виду, чем ближе ваш код доходит до «готовой продукции», тем больше вы можете ограничить базовый уровень ведения журнала для своего кода (вам нужно V в альфа, D в бета-версии, я в производстве или, возможно, даже в производстве ). Вы должны пропустить некоторые простые варианты использования и просмотреть журналы, чтобы вы все еще могли понять, что происходит, когда вы применяете более ограничительную фильтрацию. Если вы запустите с фильтром ниже, вы все равно сможете сказать, что делает ваше приложение, но, возможно, не получите все детали.

 logcat -v threadtime MyApp:I *:S 

Исходный код содержит некоторые основные рекомендации:

Порядок с точки зрения многословия, от наименьшего к большинству, – ОШИБКА, ВОЙНА, ИНФО, ДЕБЮГ, ВЕРБИС. Подробно не следует компилировать в приложение, кроме как во время разработки. Журналы отладки компилируются, но удаляются во время выполнения. Журналы ошибок, предупреждений и информации всегда сохраняются.

Для более подробной информации ответ Куртиса мертв. Я бы просто добавил: не регистрируйте личную / личную информацию в INFO или выше (WARN / ERROR). В противном случае могут быть загрязнены сообщения об ошибках или что-то еще, что включает в себя ведение журнала.

Я думаю, что точка этих разных типов ведения журнала – это то, что вы хотите, чтобы ваше приложение само по себе самостоятельно отфильтровывало собственные журналы. Таким образом, Verbose может регистрировать абсолютно все, что важно в вашем приложении, тогда уровень отладки регистрирует подмножество подробных журналов, а затем Info-уровень регистрирует подмножество журналов отладки. Когда вы переходите к журналам ошибок, вы просто хотите регистрировать любые ошибки, которые могли произойти. Существует также уровень отладки, называемый Fatal, когда что-то действительно поражает поклонника вашего приложения.

В общем, вы правы, это в основном произвольно, и вам решать, что считать отладочным журналом в сравнении с информационным, против и ошибкой и т. Д. И т. Д.

Недавно веб-сайт Android Studio (я думаю) дал некоторые рекомендации о том, какие сообщения следует ожидать от разных уровней журналов, которые могут быть полезны вместе с ответом Куртиса:

  • Verbose – Показать все сообщения журнала (по умолчанию).
  • Debug – Показывать сообщения журнала отладки, которые полезны только при разработке, а также уровни сообщений ниже в этом списке.
  • Информация – Показать ожидаемые сообщения журнала для регулярного использования, а также уровни сообщений ниже в этом списке.
  • Предупреждать – показывать возможные проблемы, которые еще не являются ошибками, а также уровни сообщений ниже в этом списке.
  • Ошибка. Покажите проблемы, вызвавшие ошибки, а также уровень сообщений ниже в этом списке.
  • Assert – Показать проблемы, которые разработчик ожидает, никогда не произойдет.