更新:重新制定问题和标题:
我一直认为昂贵的 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