当我只是在Android应用程序中记录消息时,Android Monitor会打印太多额外的垃圾文本,例如: 代码:
Log.d(TAG, "From: " + "34369257099");
Log.d(TAG, "Message Notification Body: " + "Hello");
在android监视器中输出:
10-01 14:15:33.262 18193-23771/com.xxxxx.xxxxxx D/MyFirebaseMsgService: From: 34369257099
10-01 14:15:33.262 18193-23771/com.xxxxx.xxxxxx D/MyFirebaseMsgService: Message Notification Body: Hello
[ 10-01 14:15:33.490 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9871) p->msg.arg1(0) OPEN
[ 10-01 14:15:33.490 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/net/xt_qtaguid/stats | grep 10206
[ 10-01 14:15:33.527 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:33.686 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9872) p->msg.arg1(0) OPEN
[ 10-01 14:15:33.686 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/18193/stat
[ 10-01 14:15:33.701 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:33.723 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9873) p->msg.arg1(0) OPEN
[ 10-01 14:15:33.723 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/stat
[ 10-01 14:15:33.740 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:34.051 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9874) p->msg.arg1(0) OPEN
[ 10-01 14:15:34.051 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/net/xt_qtaguid/stats | grep 10206
[ 10-01 14:15:34.086 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:34.258 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9875) p->msg.arg1(0) OPEN
[ 10-01 14:15:34.258 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/18193/stat
[ 10-01 14:15:34.274 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:34.294 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9876) p->msg.arg1(0) OPEN
[ 10-01 14:15:34.294 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/stat
[ 10-01 14:15:34.315 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:34.613 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9877) p->msg.arg1(0) OPEN
[ 10-01 14:15:34.613 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/net/xt_qtaguid/stats | grep 10206
[ 10-01 14:15:34.648 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:34.831 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9878) p->msg.arg1(0) OPEN
[ 10-01 14:15:34.831 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/18193/stat
[ 10-01 14:15:34.849 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:34.867 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9879) p->msg.arg1(0) OPEN
[ 10-01 14:15:34.867 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/stat
[ 10-01 14:15:34.885 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:35.176 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9880) p->msg.arg1(0) OPEN
[ 10-01 14:15:35.176 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/net/xt_qtaguid/stats | grep 10206
[ 10-01 14:15:35.210 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:35.404 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9881) p->msg.arg1(0) OPEN
[ 10-01 14:15:35.404 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/18193/stat
[ 10-01 14:15:35.421 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:35.439 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9882) p->msg.arg1(0) OPEN
[ 10-01 14:15:35.439 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/stat
[ 10-01 14:15:35.457 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:35.738 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9883) p->msg.arg1(0) OPEN
[ 10-01 14:15:35.738 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/net/xt_qtaguid/stats | grep 10206
[ 10-01 14:15:35.764 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:35.974 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9884) p->msg.arg1(0) OPEN
[ 10-01 14:15:35.974 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/18193/stat
[ 10-01 14:15:35.990 19060:19060 E/ ]
[adb] cuurent command is A_CLSE
[ 10-01 14:15:36.009 19060:19060 E/ ]
[adb] handle_packet() t->online(1) p->msg.arg0(9885) p->msg.arg1(0) OPEN
[ 10-01 14:15:36.009 19060:19060 E/ ]
[adb] handle the adb command, and the command = adb shell:cat /proc/stat
你能帮我解决一下吗?我的意思是为什么要打印这些额外的文字?我该如何摆脱这个?
我使用过滤器只显示与包相关的日志,并尝试过滤TAG。但是在附图中看到仍然在一些日志中打印垃圾文本。
先谢谢
答案 0 :(得分:3)
由于不需要的线条似乎都有' ['在它们中,我们应该能够创建一个排除那些线条和过滤器的过滤器。得到你需要的东西(你不能在任何日志语句中使用该字符)。
使用^[^\[]+$
创建一个过滤器作为日志消息(并确保选中正则表达式)。您还必须设置日志标记或包名称,或者您从其他不包含' [& #39;
感谢here获得正则表达式的帮助。
答案 1 :(得分:1)
答案 2 :(得分:1)
你使用ndk librairies吗?
那些日志看起来像本机代码输出。
https://android.googlesource.com/platform/system/core/+/android-4.4_r1/adb/adb.c有一些输出行的命令:
D("handle_packet() %c%c%c%c\n", ((char*) (&(p->msg.command)))[0],
((char*) (&(p->msg.command)))[1],
((char*) (&(p->msg.command)))[2],
((char*) (&(p->msg.command)))[3]);
我担心您无法控制这些输出,除了排除或重写您嵌入项目中的本机代码。如果您没有嵌入特定的本机库,这可能来自os设备的本机核心源。
答案 3 :(得分:1)
有两种方法可以做到这一点
adb logcat | grep appname
这里的应用程序名称是您的应用程序名称,用于包名称。请注意,此命令仅在cygwin中运行。以下是使用logcat -v brief output命令获得的简短logcat输出的示例。它显示该消息涉及优先级“I”和标记“ActivityManager”:
I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}
要将日志输出减少到可管理级别,可以使用过滤器表达式限制日志输出。过滤器表达式允许您向系统指示您感兴趣的标签优先级组合 - 系统会抑制指定标签的其他消息。
过滤器表达式遵循以下格式标记:priority ...,其中tag表示感兴趣的标记,priority表示为该标记报告的最低优先级。该标记的消息等于或高于指定的优先级将写入日志。您可以在单个过滤器表达式中提供任意数量的标记:优先级规范。这一系列规范是以空格分隔的。
这是一个过滤器表达式的示例,它禁止除标记为“ActivityManager”,优先级为“Info”或更高版本的所有日志消息,以及标记为“MyApp”的所有日志消息,优先级为“Debug”或更高:
adb logcat ActivityManager:I MyApp:D *:S
上述表达式中的最后一个元素*:S将所有标记的优先级设置为“silent”,从而确保只显示带有“ActivityManager”和“MyApp”的日志消息。使用*:S是确保日志输出仅限于您明确指定的过滤器的绝佳方法 - 它可以让您的过滤器充当日志输出的“白名单”。
以下过滤器表达式在所有标记上显示优先级为“warning”及更高级别的所有日志消息:
adb logcat *:W
如果您正在从开发计算机运行logcat(而不是在远程adb shell上运行它),您还可以通过导出环境变量ANDROID_LOG_TAGS的值来设置默认过滤器表达式:
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
请注意,如果从远程shell运行logcat或使用adb shell logcat,则不会将ANDROID_LOG_TAGS过滤器导出到模拟器/设备实例。
答案 4 :(得分:0)
它们是来自其他进程的日志。你不能阻止它们发生,所以你必须过滤日志输出,只显示你感兴趣的东西。
答案 5 :(得分:-3)
只是猜测:您正在使用另一种可以增加更多输出的Log类。 要检查这一点,请将Log.d()调用更改为android.util.Log.d()调用。