是否可以在 adb logcat 中清除指定的消息或行而不是全部清除?

Can a specified message or row be cleared in the adb logcat instead of clearing all?

我正在使用 Monkeyrunner(自动化)在 Android 设备(三星 S2)上测试应用程序,由于它不允许我在屏幕上看到图像模式,我不得不依赖adb logcat(使用 Windows)查找特定消息,以便了解何时为我的自动化脚本加载了下一页。

为了在 logcat 中查找特定(唯一)消息,对于我的 monkeyrunner 脚本,我必须清除所有 adb 日志,然后执行搜索。

有没有办法只清除 logcat 日志中与特定标记、消息、文本或任何内容(!)匹配的行?而不是清除一切?

命令行 adb 功能是否允许您清除特定行,或者它是全有还是全无?

清除所有 logcat longs 有效,但最好只清除某些消息,这样 if/when 出现应用程序崩溃或某些我需要详细信息以进行故障排除的事件,我可以看到导致崩溃(或重大事件)的所有日志。因为如果一切都清除了,我就无法查看 logcat 日志来解决任何问题。

::: 更多信息:::

这是我目前用来清除所有日志的函数。

def clearAdb():
    p = subprocess.Popen("adb logcat -v time", shell=True, cwd="C:\Users\<USERNAME>AppData\Local\Android\sdk\platform-tools", stdout=subprocess.PIPE)
    subprocess.Popen("adb logcat -c", shell=True, cwd="C:\Users\<USERNAME>AppData\Local\Android\sdk\platform-tools", stdout=subprocess.PIPE)
    print("::: ADB cleared :::")

..这是我如何查找 logcat 日志的示例。此 adb 函数无限期地等待特定的 adb 消息,并在看到时处理。

def adb(message):
    p = subprocess.Popen("adb logcat -v time", shell=True, cwd="C:\Users\<USERNAME>\AppData\Local\Android\sdk\platform-tools", stdout=subprocess.PIPE)
    for line in p.stdout:
        if message in line:
            print("Got 'em")
            break
        else:
            continue

...这就是我目前一起使用这些功能的方式...

clearAdb()
adb("identifyGamePackage. com.tfg.nameofapplication")

要限制 logcat 输出到特定时刻后发生的消息,您不必清除日志。而是使用 logcat -T <timestamp> 过滤器。支持的 timestamp 格式取决于 Android 版本 - 请参阅 logcat -h 输出中的 -T 段落。