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


当前回答

这可能是最简单的解决方案。

在Tom Mulcahy的解决方案之上,你可以进一步简化它,如下所示:

alias logcat="adb logcat | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`"

使用方便,如普通别名。只需在shell中输入命令:

logcat

别名设置非常方便。regex使它对于多进程应用程序非常健壮,假设你只关心主进程。

因为您可以根据需要为每个进程设置更多的别名。或者用hegazy的解。:)

此外,如果您想设置日志级别,它是

alias logcat-w="adb logcat *:W | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`"

其他回答

为您的日志命名。我叫我的“娃娃儿”。

在Android Studio中,进入Android->编辑过滤器配置

然后输入给日志的名称。对我来说,它叫“娃娃儿”。下面是一些可以使用的过滤器类型的示例。您可以通过系统进行过滤。,系统。err,日志或包名:

应用程序消息

作为一个变体,你可以使用第三方脚本PID猫由杰克沃顿。这个脚本有两个主要优点:

显示来自特定应用程序包的进程的日志项 颜色logcat

从文档:

在应用程序开发过程中,您通常希望只显示来自应用程序的日志消息。不幸的是,由于进程ID在每次部署到手机时都会更改,这对grep进行正确的操作是一个挑战。 这个脚本通过应用程序包进行过滤解决了这个问题。

输出如下所示

这可能是最简单的解决方案。

在Tom Mulcahy的解决方案之上,你可以进一步简化它,如下所示:

alias logcat="adb logcat | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`"

使用方便,如普通别名。只需在shell中输入命令:

logcat

别名设置非常方便。regex使它对于多进程应用程序非常健壮,假设你只关心主进程。

因为您可以根据需要为每个进程设置更多的别名。或者用hegazy的解。:)

此外,如果您想设置日志级别,它是

alias logcat-w="adb logcat *:W | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`"

这是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 <特定设备>]

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

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

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