Обновление: переформулировал вопрос и заголовок:
Я всегда думал, что дорогостоящие методы ведения журнала Android можно оптимизировать, спрашивая, активно ли ведение журнала, как это
import android.util.Log;
if (Log.isLoggable("MyContext", Log.DEBUG))
{
Log.d("MyContext", "my logging: " + callExpensiveCalculation());
}
Однако при попытке этого сэмулятор Android 2.2 мой Log.d () никогда не вызывается.
Так что я попробовал этот код
Log.v(MY_CONTEXT, "VERBOSE logging is active: " + Log.isLoggable(MY_CONTEXT, Log.VERBOSE));
Log.d(MY_CONTEXT, "DEBUG logging is active: " + Log.isLoggable(MY_CONTEXT, Log.DEBUG));
Log.i(MY_CONTEXT, "INFO logging is active: " + Log.isLoggable(MY_CONTEXT, Log.INFO));
Log.w(MY_CONTEXT, "WARN logging is active: " + Log.isLoggable(MY_CONTEXT, Log.WARN));
Log.e(MY_CONTEXT, "ERROR logging is active: " + Log.isLoggable(MY_CONTEXT, Log.ERROR));
и, к моему удивлению, я получил
02-27 19:05:43.015: V/MyContext(334): VERBOSE logging is active: false
02-27 19:05:43.015: D/MyContext(334): DEBUG logging is active: false
02-27 19:05:43.015: I/MyContext(334): INFO logging is active: true
02-27 19:05:43.015: W/MyContext(334): WARN logging is active: true
02-27 19:05:43.015: E/MyContext(334): ERROR logging is active: true
такведение журнала работает, даже если ведение журнала отключено.Это ошибка в Android или в моем тестовом коде?
Есть ли другой способ узнать, активна ли отладка (или один из других уровней логирования) или нет?
Я используюeclipse logcat-view с подробным уровнем журнала и запустил тест из eclipse с запуском как android-app