android - Log.isLoggable 是否返回错误值?

标签 android logging android-emulator logcat

当我为我的 android 应用程序编写日志包装器时,我注意到 androids Log.isLoggable 方法有一个奇怪的行为。执行以下代码:

final String TAG = "Test";
Log.v(TAG, "verbose is active: " + Log.isLoggable(TAG, Log.VERBOSE));
Log.d(TAG, "debug is active: " + Log.isLoggable(TAG, Log.DEBUG));
Log.i(TAG, "info is active: " + Log.isLoggable(TAG, Log.INFO));
Log.w(TAG, "warn is active: " + Log.isLoggable(TAG, Log.WARN));
Log.e(TAG, "error is active: " + Log.isLoggable(TAG, Log.ERROR));

产生以下 LogCat 输出:

VERBOSE/Test(598): verbose is active: false
DEBUG/Test(598): debug is active: false
INFO/Test(598): info is active: true
WARN/Test(598): warn is active: true
ERROR/Test(598): error is active: true

尽管我使用详细和调试日志记录生成这些输出,但为什么我会变得冗长且调试不活跃?

最佳答案

如果您阅读关于 Log.isLoggable() 的信息,您会注意到默认的日志记录级别是 INFO。任何小于此的内容(DEBUGVERBOSE)都会导致此方法返回 false。这就是为什么您的结果输出将这两个显示为 false

所有 Log.* 调用都记录到 logcat。调用 Log.isLoggable() 只是您调整日志记录的一种方式。这不是必需的。通常,您会在实际的 Log.* 调用之前调用 Log.isLoggable() 以确定是否记录它。

如果您愿意,您可以根据 TAG 调整日志记录,使用 prop 文件或通过 adb。这样做的好处是,您可以为应用程序中的每个 TAG 动态打开/关闭/关闭日志记录,而无需手动注释掉日志行或实现您自己的检查。

关于android - Log.isLoggable 是否返回错误值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7948204/

相关文章:

java - Android 读取 csv

java - 从 JNI 调用 static void Java 方法

android - 如何在不以编程方式查看(查看)android数据库中的存储值

android - 如何通过终端获取android模拟器列表?

android - 显示屏上未显示引号

java - 翻转存储为 byte[] 数组的图像

objective-c - 记录发送给 nil 的消息?

python - 为什么无法在 Windows 上清除临时目录中我的文件处理程序的文件?

java - 运行 Junit 测试时,为什么日志消息没有写入我的日志文件?

android - 重写 WebSettings cordovaExample.java 导致 PhoneGap 出错