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


当前回答

这适用于我的USB调试:

解决方案是通过shell直接使用您的设备自己的logcat。

连接设备并使用: 亚行壳 在shell设置完成后使用logcat: Logcat | grep com.yourapp.packagename

其他回答

Linux和OS X

使用ps/grep/cut获取PID,然后使用grep获取具有该PID的logcat条目。下面是我使用的命令:

adb logcat | grep -F "`adb shell ps | grep com.asanayoga.asanarebel  | tr -s [:space:] ' ' | cut -d' ' -f2`"

(您可以进一步改进正则表达式,以避免不相关的日志行包含相同的数字的理论问题,但这对我来说从来都不是问题)

这在匹配多个进程时也适用。

窗户

在Windows上,你可以这样做:

adb logcat | findstr com.example.package

ADT v15 for Eclipse允许您指定应用程序名称(实际上是androidmanifest.xml中的包值)。

我喜欢通过应用程序进行过滤,但新的logcat在自动滚动方面有一个bug。当您向上滚动一点以查看以前的日志时,它会在几秒钟内自动滚动回底部。在日志中向上滚动1/2的位置似乎可以防止它跳回底部,但这通常是无用的。

编辑:我试着从命令行指定一个应用程序过滤器——但运气不好。如果有人解决了这个问题或者如何停止自动滚动,请告诉我。

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

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

对我来说,这适用于mac终端 找到你有adb的文件夹,然后在终端中键入下面的命令

./adb logcat MyTAG:V AndroidRuntime:E *:S

这里它将过滤MyTAG和AndroidRuntime的所有日志

添加过滤器

指定名称

选择你的过滤器。