Android setprop 后 Logcat 上仍可观察到 Loggable

Android Loggable can still be observerd on Logcat after setprop

在我做任何更改之前,我为所有级别打印了 Log.isLoggable(MYAPP_TAG)

I/System.out﹕ MYAPP Loggable Level: [V:false][D:false][I:true][W:true][E:true]

然后我做了 adb shell setprop log.tag.MYAPP_TAG WARN

Log.isLoggable(MYAPP_TAG) 消息现在变成了

I/System.out﹕ MYAPP Loggable Level: [V:false][D:false][I:false][W:true][E:true]

但是,仍然可以在 Logcat 中观察到所有日志消息(Log.vLog.d 等)。

02-03 13:18:28.050    3284-3284/com.XX V/MYAPP_TAG﹕ onServiceConnected
02-03 13:18:28.050    3284-3284/com.XX D/MYAPP_TAG﹕ onServiceConnected

这是为什么?

我认为您需要包装日志:

if (Log.isLoggable("MY_TAG", Log.VERBOSE)) {
        Log.v("MY_TAG", "Here's a log message");
}

否则 android 似乎忽略了您的设置; Log.v, Log.d, etc. 似乎没有检查 LogLevel。