Как работает журнал.wtf () отличается от Log.e ()?


Я посмотрел на документация для android.утиль.Журнал и я не уверен точно, в чем разница между Log.e() и Log.wtf() есть. Один предпочтительнее другого? Есть ли разница в функциональности? Конечно, они не лишние.

Примечание для будущих читателей: в то время, когда этот вопрос был задан, документация для этого была гораздо менее ясной. Если вы перейдете по ссылке выше, они исправили проблему.

6 54

6 ответов:

есть разница в тяжести;

Log.e() просто зарегистрирует ошибку в журнале с ошибкой приоритета.

Log.wtf() будет регистрировать ошибку с уровнем приоритета ASSERT, и может (в зависимости от конфигурации системы) отправить отчет об ошибке и немедленно завершить программу.

Log.e() Это просто войти ошибка в журнал с приоритетом как ошибка.

Log.wtf() (какой ужасный сбой) является более серьезным, чем журнал ошибок. Ошибки, которые никогда не когда-нибудь, когда-нибудь случилось. Это может заставить устройство удерживать для записи журналов перед завершением программы.

Как и в случае с другими типами журналов, я понимаю, что это просто еще один тип метки для сообщений журнала. бревно.я за информацию о том, где что-то происходит. бревно.e - это ошибки, которые могут произойти. бревно.wtf - это ошибки, которые никогда не случаются. Я думаю, что это просто удобство, поэтому у вас нет чего-то вроде журнала("ошибка:", "ошибка") и журнала("информация: ", "информация")

Log.wtf() Как Log.wtf() обычно используется для ультра-неожиданные ситуации.

сначала я подумал, что это шутка, но вот она: https://developer.android.com/reference/android/util/Log.html

еще одна причина любить Android

На самом деле, это может быть ошибка документации в Android SDK, какой сюрприз... Док говорит:

ошибка всегда будет регистрироваться на уровне 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);

    ...
}

Итак, Журнал.wtf () и Log.e () оба имеют одинаковый приоритет, ошибка.

разница в том, что журнал.wtf() вызывает обратный вызов onTerribleFailure (), который "сообщает о серьезной ошибке в текущем процессе. Может не вызывать завершение процесса (зависит от настроек системы)."

Итак, другими словами, Лог.ВТФ() может привести к сбою приложения.

Ниже приведен фрагмент кода:

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);
}

Я думаю, что wtf (какой ужасный сбой) используется для сообщения о серьезных исключениях/проблемах ваших приложений (например, сообщать о них в консоли отладки).

log.e используется для сообщения об ошибках, но не так серьезно.