상세 컨텐츠

본문 제목

android logcat 실시간 parsing 해서 error 찾기

Study/Python

by 휀스 2014. 10. 31. 00:41

본문



android logcat 실시간 parsing 해서 error 찾기


테스트 app 에서 사용하는 언어가 python 인데 아직 사용에 익숙하지 않아 이것 저것 필요한 것을 손으로 만들자니 시간이 꽤나 많이 걸리네요.



소스는 아래와 같습니다.


import threading

import time


class ThreadTest(threading.Thread):

        def run(self):

                fileposition = 0

                while True :

                        f = open("logcat.out","r")

                        f.seek(fileposition)

                        while True :

                                print ("in Thread")

                                data = f.readline()

                                fileposition = f.tell()

                                if not data :

                                        print (fileposition)

                                        break

                                else :

                                        splitedData = data.split(" ")

                                        if str.find(splitedData[0],"D/dalvikvm") != -1 :

                                                print ("D/dalvikvm found")

                                        else :

                                                print (splitedData[0])

                        f.close

                        time.sleep(5)


t = ThreadTest()

t.start()






이 내용은 로컬에 logcat.out 이라는 파일로 logcat data를 저장 하도록 해 놓고 (실제 사용에서는 filtering 된 log를 저장하도록 하였습니다.) 이 파일을 5초 간격으로 읽어 D/dalvikvm 이라는 string 이 있으면 찾았다고 출력하고 없으면 첫 string 을 출력하는 예제 입니다.

파일을 읽는 위치는 최종읽은 위치를 저장하도록 하여 해당부분 이후부터 읽도록 하였습니다.


Thread 로 돌아가는 이유는 Thread 를 사용해야하는 사정이 있어서 입니다. Thread 가 필요 없다면 


fileposition = 0 부분부터 time.sleep(5) 부분 까지만 사용해도 됩니다.


이렇게 해서 특정 동작을 하며 logcat 에서 해당 message가 나오는지 검사하여 동작의 이상여부를 판단하는 것 입니다.


data.split(" ") 부분은 log cat message 에서 실제 message 부분을 걸러내기 위함입니다. 실제 사용에서는 message 부분을 봐야하니 split(" ", 2) 로 사용해야 하겠네요.


사실 이 예제는 실시간이 아니며 약 5초 이상의 gap 이 생기는 방법입니다. 물론 sleep 시간을 줄이면 되겠지만 gap을 없애지는 못하겠죠. 그리고 잦은 file read가 일어나게되니 바람직한 방법도 아니구요.


테스트 예제로 만들어본거라 python에서 logcat 을 실시간 parsing 하는 방법을 구글링해서 찾으면 해당 방법으로 교체할 예정입니다. ^^


로그캣이 아니라 다른 data file 을 읽어 사용해도 되니 쓸모 없는 코드가 되지는 않을 것 같네요.


이상 python 으로 android logcat message 실시간(?) 검사하기 예제 소스에 대한 글 이였습니다.



이 내용은 로컬에 logcat.out 이라는 파일로 logcat data를 저장 하도록 해 놓고 (실제 사용에서는 filtering 된 log를 저장하도록 하였습니다.) 이 파일을 5초 간격으로 읽어 D/dalvikvm 이라는 string 이 있으면 찾았다고 출력하고 없으면 첫 string 을 출력하는 예제 입니다.

파일을 읽는 위치는 최종읽은 위치를 저장하도록 하여 해당부분 이후부터 읽도록 하였습니다.


Thread 로 돌아가는 이유는 Thread 를 사용해야하는 사정이 있어서 입니다. Thread 가 필요 없다면 


fileposition = 0 부분부터 time.sleep(5) 부분 까지만 사용해도 됩니다.


이렇게 해서 특정 동작을 하며 logcat 에서 해당 message가 나오는지 검사하여 동작의 이상여부를 판단하는 것 입니다.


data.split(" ") 부분은 log cat message 에서 실제 message 부분을 걸러내기 위함입니다. 실제 사용에서는 message 부분을 봐야하니 split(" ", 2) 로 사용해야 하겠네요.


사실 이 예제는 실시간이 아니며 약 5초 이상의 gap 이 생기는 방법입니다. 물론 sleep 시간을 줄이면 되겠지만 gap을 없애지는 못하겠죠. 그리고 잦은 file read가 일어나게되니 바람직한 방법도 아니구요.


테스트 예제로 만들어본거라 python에서 logcat 을 실시간 parsing 하는 방법을 구글링해서 찾으면 해당 방법으로 교체할 예정입니다. ^^


로그캣이 아니라 다른 data file 을 읽어 사용해도 되니 쓸모 없는 코드가 되지는 않을 것 같네요.


이상 python 으로 android logcat message 실시간(?) 검사하기 예제 소스에 대한 글 이였습니다.




관련글 더보기