更新:重构了问题和标题:
我一直认为,可以通过像这样询问日志是否活动来优化昂贵的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 视图,并使用 verbose 日志级别从 Eclipse 启动测试。