为什么logcat会忽略标记为“PHONE”的日志语句?

时间:2012-01-28 22:54:45

标签: android tags logcat

我在我的呼叫按钮上设置了一个监听器,起初我只是想确保监听器正在工作,所以我在其中放入一个日志语句。但出于一些神秘的原因,当我点击它时它拒绝打印!所以也许调用按钮是null,我想,并添加了一个else语句......但它没有打印if或else语句中的任何内容!它会在之前和之后打印语句,但完全忽略if-else结构中的所有内容。这是代码:

ImageButton call = (ImageButton) v.findViewById(R.id.callButton);

Log.d("MEETINGS", "ABOUT TO WORK W/ CALL");
Log.e("MEETINGS", "" + (call != null));

if (call != null) {
    Log.d("PHONE", "setting stuff on call...");
    call.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        Log.d("PHONE", "on call : " + phone);
        }
    });
} else {
System.out.println("why is this messed up");
Log.d("PHONE", "call button was null!");
}

System.out.println("what the heck is going on");

在尝试揭开Java如何决定跳过if和else之后的至少15分钟之后,我尝试给日志语句一个不同的标记。

尤里卡!这就是诀窍!我将“PHONE”改为“BLAH”,突然间世界再次变得有意义!好奇,我把它改成了“电话”,它拒绝重新打印。

故事的道德:永远不要在logcat中使用“phone”或“PHONE”标签!!!

有人可以向我解释一下logcat如何和/或为何忽略带有“PHONE”标签的邮件?

1 个答案:

答案 0 :(得分:0)

请参阅isLoggable()的文档。我猜你的手机已禁用“PHONE”标签的调试输出,以抑制实际手机应用的输出。

我相信您应该能够在手机上的shell中运行“getprop log.tag.PHONE”,以检索标记为“PHONE”的邮件所需的最低严重性级别。