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


当前回答

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

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

其他回答

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

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

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

从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}') 

这已经为我工作在git bash:

$ pid=$(adb shell ps | grep <package name> | cut -c11-15) ; adb logcat | grep $pid