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


当前回答

应用程序消息

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

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

从文档:

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

输出如下所示

其他回答

使用-s !

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

我试图使用Tom Mulcahy的答案,但不幸的是,它不适用于具有多个进程的应用程序,所以我编辑它以满足我的需求。

#!/bin/bash
if [ "$#" -ne 1 ]; then echo "Illegal number of parameters"; exit 1; fi
echo "Lof for package name: $1"
PROCESSES=`adb shell ps | grep "$1" | cut -c10-15`
NUM_OF_PROCESSES=`echo "$PROCESSES" | wc -l`
if [ $NUM_OF_PROCESSES -eq 0 ]; then echo "The application is not running!"; exit 1; fi
COUNTER=1
for process in $PROCESSES; do
        if [ $COUNTER -eq 1 ]; then GREP_TEXT="("; fi
        GREP_TEXT+=$process
        if [ $COUNTER -eq $NUM_OF_PROCESSES ]; then GREP_TEXT+=")"; else GREP_TEXT+="|"; fi
        let COUNTER=COUNTER+1 
        if [ $COUNTER -gt $NUM_OF_PROCESSES ]; then break; fi  
done
adb logcat | grep -E "$GREP_TEXT"

我通常会在日志消息中添加一些内容以使其与众不同。或者以unity app为例,你可以使用“unity”作为匹配字符串。

对于mac:

adb logcat | grep "MyUniqueString" 

Windows (powershell):

adb logcat | Select-String "MyUniqueString"
adb logcat -e "appname" 

这工作时,过滤行只有一个应用程序。

现在可以输入tag:nameofthetag或app:nameoftheapp来过滤,而不需要在保存的过滤器栏中添加新的过滤器