我观察到,当我使用Logcat Eclipse ADT for Android时,我也从许多其他应用程序获得消息。是否有一种方法来过滤这个,只显示来自我自己的应用程序的消息。
当前回答
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
其他回答
应用程序消息
作为一个变体,你可以使用第三方脚本PID猫由杰克沃顿。这个脚本有两个主要优点:
显示来自特定应用程序包的进程的日志项 颜色logcat
从文档:
在应用程序开发过程中,您通常希望只显示来自应用程序的日志消息。不幸的是,由于进程ID在每次部署到手机时都会更改,这对grep进行正确的操作是一个挑战。 这个脚本通过应用程序包进行过滤解决了这个问题。
输出如下所示
我通常会在日志消息中添加一些内容以使其与众不同。或者以unity app为例,你可以使用“unity”作为匹配字符串。
对于mac:
adb logcat | grep "MyUniqueString"
Windows (powershell):
adb logcat | Select-String "MyUniqueString"
Windows CMD
例如,如果您的应用程序包名称为:com.nader.chat
cd C:\Users\[your-username]\AppData\Local\Android\Sdk\platform-tools
adb shell logcat *:E | findstr /c:"at com.nader.chat"
:E只是过滤日志中的错误,你可以替换为V:详细(最低优先级),D:调试,I:信息,W:警告,F:致命。 在发现错误只是在你写的源代码,而不是其他相关的模块
这可能是最简单的解决方案。
在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`"
我写了一个shell脚本,通过包名过滤logcat,我认为这比使用更可靠
ps | grep com.example.package | cut -c10-15
它使用/proc/$pid/cmdline找到实际的pid,然后在logcat上执行grep
https://gist.github.com/kevinxucs/7340e1b1dd2239a2b04a
推荐文章
- Android Studio, logcat在应用程序关闭后清理
- 在android中从上下文获取活动
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 按钮背景是透明的
- 在Mac OS X上哪里安装Android SDK ?
- 我如何获得图像缩放功能?
- 在Android应用程序中显示当前时间和日期
- BottomSheetDialogFragment的圆角
- 在应用程序启动时出现“无法获得BatchedBridge,请确保您的bundle被正确打包”的错误
- 我如何改变默认对话框按钮的文本颜色在安卓5
- 更改单选按钮的圆圈颜色
- 如何在android中复制一个文件?
- adb找不到我的设备/手机(MacOS X)
- Android Studio中的。iml文件是什么?