Чем отличается Log.wtf() от Log.e()?
Я просмотрел документацию для android.util.Log, и я точно не знаю, в чем разница между Log.e()
и Log.wtf()
есть. Один из них предпочтительнее другого? Есть ли разница в функциональности? Разумеется, они не являются излишними.
Примечание для будущих читателей: на тот момент, когда этот вопрос был задан, документация для этого была гораздо менее ясной. Если вы перейдете по ссылке выше, они устранили проблему.
Ответы
Ответ 1
Существует разница в степени тяжести;
Log.e()
будет просто записывать ошибку в журнал с приоритетом ERROR.
Log.wtf()
будет регистрировать ошибку с ASSERT уровня приоритета и может (в зависимости от конфигурации системы) отправлять отчет об ошибке и немедленно завершать программу.
Ответ 2
Log.e()
- это просто журнал ошибок в журнале с приоритетом как ERROR.
Log.wtf()
(Какой ужасный провал) более серьезный, чем журнал ошибок. Ошибка, которая никогда не случалась никогда. Это может вынудить устройство удерживать для записи журналов до завершения программы.
Ответ 3
Как и другие типы ведения журналов, я понимаю, что это просто другой тип метки для сообщений журнала. log.i - это информация о том, где что-то происходит. log.e для ошибок, которые могут произойти. log.wtf для ошибок, которые никогда не случаются. Я думаю, что это просто убежденность, поэтому у вас нет чего-то вроде Log ( "ERROR:", "error" ) и Log ( "INFO:", "информация" )
Ответ 4
Собственно, это может быть ошибка документации в Android SDK, что удивительно... Doc говорит:
Ошибка всегда регистрируется на уровне ASSERT с помощью стека вызовов.
Но исходный код говорит следующее:
static int wtf(int logId, String tag, String msg, Throwable tr, boolean localStack, boolean system) {
...
int bytes = printlns(logId, ERROR, tag, msg, localStack ? what : tr);
...
}
Итак, Log.wtf() и Log.e() имеют одинаковый приоритет, ERROR.
Разница в том, что Log.wtf() вызывает обратный вызов onTerribleFailure(), который "Сообщить о серьезной ошибке в текущем процессе. Может или не может привести к завершению процесса (зависит от настроек системы)".
Итак, другими словами, Log.wtf() может привести к краху вашего приложения.
Ниже приведен фрагмент кода:
if (ActivityManager.getService().handleApplicationWtf(
mApplicationObject, tag, system,
new ApplicationErrorReport.ParcelableCrashInfo(t))) {
// The Activity Manager has already written us off -- now exit.
Process.killProcess(Process.myPid());
System.exit(10);
}
Ответ 5
Log.wtf()
очень похож на Log.e()
однако Log.wtf()
обычно используется для Log.wtf()
ситуаций.
Также Log.e()
регистрирует с приоритетом ERROR. Однако в случае Log.wtf()
ошибка всегда будет регистрироваться на уровне ASSERT со стеком вызовов.
Сначала я подумал, что это шутка, но вот она: https://developer.android.com/reference/android/util/Log.html
Еще одна причина любить Android <3
Ответ 6
Я думаю, что wtf (какой ужасный отказ) используется для сообщения о серьезных исключениях/проблемах ваших приложений (например, сообщать об этом в консоли отладки).
log.e используется для сообщения об ошибках, но не так серьезно.
Ответ 7
Я не знал этого, пока не работал над слоем ROM.
Log.wtf() завершит ваш процесс, если будут установлены определенные условия. Я был совершенно сбит с толку относительно того, почему системный сервис все время падал. Дело в том, что я использовал Log.wtf(), и меня уволили за то, что "этого никогда не должно случиться"