我注意到当我在使用带有ADT的Eclipse的Logcat时,会收到来自许多其他应用程序的消息。有没有办法过滤这些消息,仅显示来自我的应用程序的消息。
我注意到当我在使用带有ADT的Eclipse的Logcat时,会收到来自许多其他应用程序的消息。有没有办法过滤这些消息,仅显示来自我的应用程序的消息。
将此内容添加到 applog.sh 文件中。
#!/bin/sh
PACKAGE=$1
APPPID=`adb -d shell ps | grep "${PACKAGE}" | cut -c10-15 | sed -e 's/ //g'`
adb -d logcat -v long \
| tr -d '\r' | sed -e '/^\[.*\]/ {N; s/\n/ /}' | grep -v '^$' \
| grep " ${APPPID}:"
then:
applog.sh com.example.my.package
log.d("TAG", "multine\nlog")
):adb -d logcat -v long | sed -Ene '/^\[.*'" (${APPID}):"'.*\]/{N; s/\n/ /; p; :a;' -e 'n; p; s/^.+$/foo/; t a;' -e '}' | grep -v '^$'
- 我省略了 tr
,假定在Windows系统上需要它,并将 APPID
用括号括起来以允许多个PID(由 |
分隔)。 - Logan PickupUse -s
!
You should use your own tag, look at: http://developer.android.com/reference/android/util/Log.html
Like.
Log.d("AlexeysActivity","what you want to log");
And then when you want to read the log use>
adb logcat -s AlexeysActivity
That filters out everything that doesn't use the same tag.
我编写了一个用于按包名过滤logcat的shell脚本,我认为这比使用<grep>更可靠。
ps | grep com.example.package | cut -c10-15
LogCat应用程序消息
作为一种选择,您可以使用Jake Wharton的第三方脚本PID Cat。该脚本具有两个主要优点:
从文件的文档中得知:
在应用程序开发期间,您经常只想显示来自您的应用程序的日志消息。不幸的是,由于每次在手机上部署时过程ID都会更改,因此很难grep到正确的内容。
这个脚本通过按应用程序包进行过滤来解决这个问题。
adb logcat
:获取整个logcat。
adb shell pidof 'com.example.debug'
:获取您的应用程序的进程ID。
adb logcat pid=<pid>
:获取特定于您的应用程序的logcat。
adb logcat pid=<pid>|grep 'sometext'
:基于某些文本过滤logcat。logcat
只是不断地输出每个应用程序的每个日志消息。 - Slbox对于一个可调试的应用程序,我建议
adb shell run-as my.package.name logcat
--uid
标志。不幸的是,没有uidof
,所以我需要从pm
中提取它。以下是一个小的sh脚本来完成这个任务:function logcat {
pkg="$1"
shift
if [ -z "$pkg" ]; then
>&2 echo 'Usage: logcat pkg ...'
return 1
fi
uid="$(adb shell pm list package -U $pkg | sed 's/.*uid://')"
if [ -z "$uid" ]; then
>&2 echo "pkg '$pkg' not found"
return 1
fi
adb logcat --uid="$uid" "$@"
}
使用方法是logcat my.package.name
。它接受像普通 logcat 一样的额外参数。
我更喜欢这种基于--pidof
的解决方案(参见https://dev59.com/bmw15IYBdhLWcg3wD3jp#48004086),因为那需要您每次重新启动进程时都重新运行命令。
我通常会在日志消息中添加一些内容,使其与其他消息区分开来。例如,在Unity应用程序中,您可以使用“Unity”作为匹配字符串。
对于Mac:
adb logcat | grep "MyUniqueString"
对于Windows(PowerShell):
adb logcat | Select-String "MyUniqueString"
grep
的实现帮了很大的忙! - Chaki_Black