def search_syslog_new(self, syslog_re, timeout=150, search_res={}, begin_line=0):
start_time = time.time()
while True:
adb_cmd = "adb -s {0} shell tail -F -n 10 syslog.log |grep --line-buffered 'signal = trans, message ='".format(device_name)
return_code = Popen(adb_cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
log_lines = return_code.stdout.readlines(10)
print('log_content_is', log_lines)
for line in range(begin_line, len(log_lines)):
if re.compile(syslog_re).search(log_lines[line].decode('utf-8')) is not None:
# 呼叫回呼函式處理
# print('log_content_is', log_lines[line].decode('utf-8'))
if (search_res):
search_res['search_groups'] = re.compile(syslog_re).search(log_lines[line].decode('utf-8')).groups()
print(search_res['search_groups'])
print(re.compile(syslog_re).search(log_lines[line].decode('utf-8')))
# return True
# time.sleep(0.1)
if (time.time() > start_time + float(timeout)):
print("search syslog for {} seconds, timeout".format(timeout))
break
return False
syslog.log內容是不斷新增的,通過執行上面方法拿內容時print('log_content_is', log_lines) 回傳結果有時缺少了部分行
但同步在命令列上直接執行 tail -F -n 10 syslog.log |grep --line-buffered 'signal = trans, message = ' 時對應結果都是完整的,沒有缺失
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/278620.html
