可以在adb logcat中清除指定的消息或行而不是全部清除?
我正在使用Monkeyrunner(自动化)测试Android设备上的应用程序(Samsung S2),并且由于它不允许我在屏幕上看到图像模式,所以我必须依靠adb logcat(使用Windows)查找特定的消息以便知道下一页何时加载了我的自动化脚本。可以在adb logcat中清除指定的消息或行而不是全部清除?
而为了在logcat中查找特定(唯一)消息,对于我的monkeyrunner脚本,我必须清除所有adb日志,然后执行搜索。
有没有办法在logcat日志中只清除与特定标记,消息,文本或任何(!)匹配的行?而不是清理一切?
命令行adb功能是否允许您清除特定的行,或者它是一个全或无的东西?
清除所有logcat longs的工作,但它是很好的只清除某些消息,以便如果/当有一个应用程序崩溃,或一些事件,我需要详细的故障排除,我可以看到所有的日志导致事故(或重大事件)。因为如果一切都清除了,我无法看到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>
过滤器。支持时间戳格式取决于Android版本 - 请参阅-T
段落中的logcat -h
输出。
你能提供一个你正在谈论的例子吗? – JordanViaComputer
我在一行上做了这个“adb shell echo $ EPOCHREALTIME”,然后在我做了这个“adb logcat -T $ EPOCHREALTIME”之后,但是我收到以下错误消息:“$ EPOCHREALTIME”not in“%m-%d %H:%M:%S.%q“时间格式。这个命令不仅没有设置特定的日期时间,而且它的格式也是错误的。你可以再扩展一下吗? – JordanViaComputer
错误消息非常明确。您的设备非常陈旧,并且不支持时代格式的logcat时间戳。所以使用它支持的格式。 –
为什么你确实认为你需要*清除日志? –
由于自动化脚本中有很多循环,我必须多次重复使用相同的logcat消息,并且如果以前使用的消息在我再次开始查找时未被清除,我的脚本将错误地找到第一次出现logcat消息,并过早地转向下一个动作。 – JordanViaComputer
因此请更改您的脚本以找到正确的消息实例。你不需要清除日志来做到这一点 –