Logcat: 使用 'Log' 进行输出 class 显示完整包名
Logcat: make output using 'Log' class show full package name
我在我的代码中使用相同的 class 语句,如下所示:
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();
我认为这可能是因为某些语句位于 class 中的 class 中,但事实并非如此。我需要做什么才能在 logcat 输出中获取完整的包名称?
public class 应用 {
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, "Writing command to initialize the FORA");使用 Log.i(App.getTag(), "Writing command to initialize the FORA")
它不依赖于消息本身。如果您在 Logcat 中使用来自同一个 class 的 Log.i() 直接关注信息日志,则只有第一个显示 class 名称。 (我不知道为什么会这样。) Log.w() 也是一样。
如果您使用 Log.d(),则每次都会显示 class 名称。
我在我的代码中使用相同的 class 语句,如下所示:
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();
我认为这可能是因为某些语句位于 class 中的 class 中,但事实并非如此。我需要做什么才能在 logcat 输出中获取完整的包名称?
public class 应用 {
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, "Writing command to initialize the FORA");使用 Log.i(App.getTag(), "Writing command to initialize the FORA")
它不依赖于消息本身。如果您在 Logcat 中使用来自同一个 class 的 Log.i() 直接关注信息日志,则只有第一个显示 class 名称。 (我不知道为什么会这样。) Log.w() 也是一样。
如果您使用 Log.d(),则每次都会显示 class 名称。