我观察到,当我使用Logcat Eclipse ADT for Android时,我也从许多其他应用程序获得消息。是否有一种方法来过滤这个,只显示来自我自己的应用程序的消息。


当前回答

从Android 7.0开始,logcat有——pid过滤选项,pidof命令可用,将com.example.app替换为您的包名。 (ubuntu终端/ Android 7.0起)

adb logcat --pid=`adb shell pidof -s com.example.app`

or

adb logcat --pid=$(adb shell pidof -s com.example.app)

有关pidof命令的更多信息: https://stackoverflow.com/a/15622698/7651532

其他回答

当你在shell内部时,获取确切包名日志的另一种方法:

logcat --pid $(ps -ef | grep -E "com.example.app\$" | awk '{print $2}') 

在intelliJ中(可能在eclipse中也有),你可以通过文本webview过滤logcat输出,所以它基本上打印phonegap生成的所有内容

使用-s !

你应该使用你自己的标签,看看: http://developer.android.com/reference/android/util/Log.html 喜欢的。 日志。d(“AlexeysActivity”,“你想要记录什么”); 然后当你想读取日志时使用> adb logcat -s AlexeysActivity 过滤掉所有不使用相同标签的内容。

5月17日更新

几年过去了,情况变了。Eclipse也不再受官方支持。这里有两种最新的方法:

1. Android工作室

在Android监视器工具箱中,您可以根据可调试进程过滤logcat。通常,当您开发应用程序时,它是一个可调试的过程。每隔一段时间我就会遇到这样的问题,然后我就会这样做:

工具-> Android ->启用ADB集成。 如果它已经启用,那么将其关闭,然后再打开 拔下移动设备的电源插头。

还有通过正则表达式和调试级别进行过滤的选项

2. logcat-color

如果你想使用基于终端的解决方案,这是adb logcat之上的一个漂亮的python包装器。这样做的好处是您可以保存多个配置并简单地重用它们。通过标记进行筛选非常可靠。你也可以过滤包只看到一个或多个应用程序的日志,但你启动logcat-color在启动你的应用程序之前。

旧的回答:

似乎我不能评论之前的答案,所以我将发布一个新的。 这是对Tom Mulcahy的回答的评论,说明了该命令应该如何更改,以便在大多数设备上工作,因为adb shell ps PID列是可变的。

注意:下面的命令适用于连接了许多设备的情况。所以需要设备id。否则,可以简单地省略括号'[',']'

1. 要找出pid的列,输入:

adb [-s DEVICE_ID] shell ps | head -n 1

现在记住PID的列号。编号从1开始。

2. 然后输入以下内容:

adb [-s DEVICE_ID] logcat | grep $(adb [-s DEVICE_ID] shell ps \
| grep "com.example" | awk -F" " ' {print $PUT_COLUMN_HERE}')

简单地把你记住的列放在PUT_COLUMN_HERE中,例如$5

警告

每次重新运行应用程序时,都必须重新运行第二个命令,因为应用程序从操作系统获得了一个新的PID。

这是Gavriel的applog.sh的另一个变体,支持多个设备和多个进程的应用程序:

#!/bin/sh
PKG=$1
shift

APPIDS=`adb $@ shell ps | awk -v PKG="$PKG" '
    (NR == 1){appcolumn=2; for (i=1; i<=NF; i++) if ($i=="PID") {appcolumn=i}}
    index($0,PKG){print $(appcolumn)}' | paste -d \| -s`

echo "PID's: $APPIDS"
adb $@ logcat -v color | awk  "(\$3 ~ /$APPIDS/){print \$0}"

使用方法:applog.sh com.example.my.package [-s <特定设备>]