python 모니터링 logcat 키워드 기능
다 중 프로 세 스 를 사용 하여 여러 장 치 를 동시에 감시 하고 여러 키 워드 를 감시 할 수 있 습 니 다.
ADB 환경 을 설정 해 야 합 니 다.구체 적 인 설정 은 소개 가 많 지 않 습 니 다.아무 거나 찾 아 보고 코드 를 직접 올 립 니 다.
전역 변수 제 어 를 통 해 모니터링 기능 을 켜 고 닫 습 니 다.INSTRUCTION 은 명령 에 따라 대응 하 는 방법 명 을 가 져 오 는 데 사 용 됩 니 다.
import os, threading, datetime
# , LOG
LOG_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "log")
#
KEYWORDS = ["ANR ", "NullPointerException", "CRASH", "Force Closed"]
#
STOP_LOGCAT = True
#
INSTRUCTION = {
"1": "filter_keywords",
"2": "stop_filter_keywords",
"3": "exit"
}
def filter_keywords():
global STOP_LOGCAT
STOP_LOGCAT = False
devices = get_devices() #
print(" ")
for device in devices:
t = threading.Thread(target=filter_keyword, args=(device,))
t.start()
def stop_filter_keywords():
global STOP_LOGCAT
if STOP_LOGCAT:
print("
")
else:
STOP_LOGCAT = True
print("
")
키워드 주 함수 모니터링,
def filter_keyword(device):
print(" %s " % str(device))
sub = logcat(device)
with sub:
for line in sub.stdout: # , .stdout
for key in KEYWORDS:
if line.decode("utf-8").find(key) != -1: # stdout ,
message = " :%s :%s
" % (device, key)# :192.168.56.104:5555 :ANR
path = get_log_path("bugreport") #
bugreport(device, path)#
send_message(message) # ,
if STOP_LOGCAT:
break
print(" %s " % str(device))
sub.kill()
subprocess.Popen 을 통 해 프로 세 스 실행 명령 을 만 들 고 stdout 으로 로 그 를 계속 출력 합 니 다.
# logcat
def logcat(device):
command = "adb -s " + str(device) + " logcat -v time"
sub = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return sub
연 결 된 모든 장 치 를 가 져 오 는 방법 입 니 다."adb devices"를 실행 한 후 다음 과 같이 출력 합 니 다.명령 을 실행 한 문자열 절단 을 통 해 모든 장치 번 호 를 목록 으로 저장 합 니 다.
# device
def get_devices():
command = "adb devices"
res = os.popen(command).read()
devices = []
res = res.split("
")
for i in res:
if i.endswith("device"):
devices.append(i.split('\t')[0])
return devices
#
def bugreport(device, path):
os.chdir(path)# bugreport ,
command = "adb -s " + str(device) + " bugreport"
subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=-1)
print(" :%s :%s" % (str(device), path))
이로써 현재 파일 이 있 는 디 렉 터 리/년/월/일 형식 으로 로그 경 로 를 가 져 옵 니 다.자동 으로 생 성 되 지 않 으 면
# ,
def get_log_path(tag):
year = datetime.datetime.now().strftime('%Y')
month = datetime.datetime.now().strftime('%m')
day = datetime.datetime.now().strftime('%d')
path = os.path.join(LOG_PATH, tag, year, month, day)
if not os.path.exists(path):
os.makedirs(path)
return path
main 함수,순환 수신 명령,수신 명령 에 따라 방법 명 을 얻 고 eval()방법 으로 실행 합 니 다.
def main():
while True:
print("-" * 100)
print("1:
2:
3: ")
print("-" * 100)
instruction = str(input("
:
"))
print("-" * 100)
while instruction not in INSTRUCTION.keys():
instruction = str(input("
, :"))
if int(instruction) == 9:
exit() # TODO monkey
eval(INSTRUCTION[str(instruction)] + "()")
if __name__ == '__main__':
main()
로그 모니터링 과 닫 는 방법 만 적 혀 있 습 니 다.중간 에 일부 처 리 는 자신의 수요 에 따라 이 루어 질 수 있 습 니 다.예 를 들 어 키 워드 를 감지 한 후에 모든 로 그 를 끌 어 내 는 것 을 제외 하고 메 일,못 같은 통 지 를 보 내 고 자신의 수요 에 따라 이 루어 질 수 있 습 니 다.총결산
python 모니터링 logcat 키워드 기능 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 python 모니터링 logcat 키워드 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.