带包名的adb shell Logcat

Fel*_*ann 12 android adb logcat

是否也可以在每一行显示Log的包名?
运用

logcat -v long

确切地将包名称字段(在PID之后)留空.
我想从具有不同标签的特定应用程序中过滤日志,只是想知道是否可能.

Ale*_* P. 13

logcat记录没有"包名称字段".因此没有标准/内置方式来过滤它.

虽然从Android 7.0开始,您可以使用logcat --pid选项与pidof -s命令结合来按二进制/包名称过滤输出:

adb shell "logcat --pid=$(pidof -s <package_name>)"
Run Code Online (Sandbox Code Playgroud)

更换"'为Linux/MacOS的

  • 这个对我有用。对于 Linux/MacOS,请记住将 " 替换为 ' (3认同)
  • 对于 Windows PowerShell:“adb logcat --pid=$(adb shell pidof -s &lt;程序包名称&gt;)” (2认同)

小智 7

这是我的剧本.有点生锈但仍在工作.

PID=`adb shell ps | grep -i <your package name> | cut -c10-15`;
adb logcat | grep $PID
Run Code Online (Sandbox Code Playgroud)

实际上我有一个python脚本来添加更多的颜色,并有一个while循环来在重新启动时继续监视该进程,但我认为你会明白这一点.


Alb*_*dez 6

每个人似乎都指出通过 PID 过滤作为解决方案。忽略这一点。正确的方法是按 UID 进行过滤,因为 UID永久绑定到包名称(它不会在崩溃、升级、重新启动等情况下更改)。

要查找您的包名称的 UID:

adb shell dumpsys package <PACKAGE> | grep userId
Run Code Online (Sandbox Code Playgroud)

它会打印类似以下内容:

    userId=10412
Run Code Online (Sandbox Code Playgroud)

然后传递--uid=10412给logcat。

遗憾的是谷歌没有在任何可见的地方记录这一点,我不得不自己找到它。请为可见度点赞。