Logcat:使用' Log'进行输出class显示完整的包名

时间:2018-04-11 13:09:35

标签: android android-logcat

我在同一个类中的代码中使用的语句如下所示:

Log.i(TAG, "Writing command to initialize the FORA");

Log.i(TAG, "onDescriptorWrite signaled with status " + status);

然而第一个的输出是

Writing command to initialize the FORA

但第二个是

04-11 08:01:13.109 9030-9139/? I/com.lampreynetworks.ahd.transport.btle.b: onDescriptorWrite signaled with status 0

我想在两种情况下都使用包名称输出。我认为这是由TAG决定的,在我的情况下是

private static final String TAG = AndroidBtleHandler.class.getName();

我认为这可能是因为某些陈述属于班级内的一个班级,但事实并非如此。要在logcat输出中获取完整的软件包名称,我需要做什么?

2 个答案:

答案 0 :(得分:0)

公共类App {

public static String getTag() {
    String tag = "";
    final StackTraceElement[] ste = Thread.currentThread().getStackTrace();
    for (int i = 0; i < ste.length; i++) {
        if (ste[i].getMethodName().equals("getTag")) {
            tag = "("+ste[i + 1].getFileName() + ":" + ste[i + 1].getLineNumber()+")";
        }
    }
    return tag;
}

}

而不是Log.i(TAG,&#34;写入命令来初始化FORA&#34;);使用Log.i(App.getTag(),&#34;编写命令初始化FORA&#34;)

答案 1 :(得分:0)

它不依赖于消息本身。如果您在Logcat中使用Log.i()直接跟踪信息日志,则只有第一个显示类名。 (我不知道为什么会这样。)与Log.w()相同。

如果使用Log.d(),则每次都会显示类名。