通过logcat在Android上调试WebView(Ionic)应用程序

14

关于这个主题有几个问题,但似乎没有一个问题能够解决我正在遇到的特定问题。

我正在使用Cordova/Ionic开发应用程序,并且通过使用adb logcat CordovaLog:D *:S将使用console.log()输出的调试信息打印出来,一直工作得很好,直到一些更新。现在我似乎无法弄清楚如何正确过滤logcat的输出,以便只从我的应用程序中获取调试信息。

记录本身可以正常工作。如果我不设置过滤器并将输出重定向到文件,则可以在所有其他调试消息中看到我的调试信息,并且它看起来像这样:

I/Web Console: Event triggered: device.ready:1

将日志输出到屏幕也可以,但速率大约为每秒100行。我至少尝试了以下内容来过滤输出:

adb logcat -s "Web Console"
adb logcat "Web Console":V
adb logcat "Web Console":*
adb logcat -s Web
adb logcat Web:V
adb logcat "myApp":V
adb logcat myApp:V
adb logcat -s myApp

...还有其他一些我已经忘记的。 它们要么根本不打印任何内容,要么从系统服务中打印所有内容。

我在Windows上,所以我不能使用grep,而我正在调试的设备运行Android 4.2.2,所以我不能使用GapDebug,似乎也无法通过Chrome中的chrome://inspect访问设备的日志。

我真的非常希望了解如何过滤logcat的输出。 我不想将所有内容记录到文件中,然后再进行筛选。


1
adb logcat -s "Web Console":* 我建议标签名不要使用空格 - Alex P.
@AlexP. 不行,还是没有。这个标签是由Cordova定义的,我不知道如何更改它。以前它是CordovaLog,就像我说的那样,一切都运作得很好。要么是关于如何更改标签名称的信息不存在于文档中,要么是我的谷歌搜索技巧太差了。 - Schlaus
1
adb shell "logcat -s 'Web Console':*" - Alex P.
@AlexP。谢谢,但结果仍然相同。:( 没有任何输出。也许标签真的不能有空格。 - Schlaus
2
好的,总是有adb shell“logcat | grep'Web Console'” - Alex P.
1
@AlexP。是的!就是那个!请把它做成一个答案,这样我就可以接受它了! - Schlaus
4个回答

21

看起来logcat无法正确解析带有空格的标签名称。因此,我建议在设备上使用grep

adb shell "logcat | grep 'Web Console'"

节省了很多麻烦 - lk404
我只是输入了 adb logcat | grep app=mi - deFreitas
在我的情况下,按“Web控制台”过滤无效,但按“chromium”过滤有效:adb shell“logcat | grep'chromium'” - Alexey Grinko

7

如果在 Linux 或 Unix 操作系统/ Git Bash 上运行 adb:


adb logcat | grep 'Web Console'

5

我在2019年的技术方面有了一些经验:

adb -d logcat chromium:I *:S

在我的情况中,-d 表示物理设备。如果其他方法都失败了,只需将 adb logcat 的结果转储到文本文件中,并搜索 "CONSOLE",那么这将为您的 logcat 过滤器提供程序。看起来这会随着时间的推移而发生变化,并取决于您特定的开发环境。


这是唯一对我有效的方法!谢谢。 - Adam
并且在2020年 - leech

2

被接受的答案在所有三个支持的操作系统中都可以工作。不需要仅限于Windows的解决方案。 - Alex P.
你说得完全正确(grep 可在所有主要操作系统上运行)- 我发布这个答案的原因是:a) 针对那些不太熟悉 GNU 工具的用户;b) 考虑到用户声明“我在 Windows 上,所以无法使用 grep”;c) 提供一个链接给 grep(再次针对那些主要在 Windows 下工作且可能甚至不知道 grep 的用户)。 - ingenuine
1
你没有理解被接受的答案中 grep 在设备本身上运行这一点。因此,主机 PC 系统是否有可用的 grep 并不重要。 - Alex P.
我确实这么认为 - 很好的观点 - 如果您在物理设备上运行应用程序,您的答案也可以提高日志记录的性能,因为运行adb的主机将不必过滤整个日志(留给设备进行过滤)。 - ingenuine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接