Tempo Di Valse

[Android] Logcat 에서 보고 싶은 태그만 필터링하기 본문

개발/Android

[Android] Logcat 에서 보고 싶은 태그만 필터링하기

TempoDiValse 2022. 5. 16. 11:29
\w+/(AndroidRuntime|System.(out|err))

안드로이드 개발하는데 가장 도움을 주는 보조프로그램이라 하면, Logcat 을 빼놓을 수가 없다. 디버깅 할 때에나 원하는 결과값을 보거나 할 때에는 Logcat 만큼 한 눈에 볼 수 있는 보조프로그램은 없기 때문에 이것만 잘 활용하더라도 초보 개발자에겐 개발의 질이 확연히 높아질 수 밖에 없다.

 

이 포스팅은 Logcat 을 사용하는 방법 중에 정규식(Regex) 을 이용하여 보고싶은 태그들만 Logcat 내용을 간단하게 필터링하는 방법에 대해 소개를 해보려고 한다.

 

보통 핸드폰을 연결하거나 하게되면 오지게 많은 양의 Logcat 데이터가 출력이 되는데,

과연 이 데이터를 전부 봐야할 필요가 있을까 싶다. 게다가 너무 많은 양이 보이기 때문에 정작 내가 앱에서 어떤 로그를 뿌려주는 것도 한번에 캐치하기 어려울 때가 존재한다.

 

물론 Logcat 이 'No debuggable processes' 상태이기 때문에 디바이스 시스템의 로그가 전부 튀어나오는 상황이긴 하지만, 앱을 스튜디오를 통해 돌리고 있는 상황에도 충분히 필터링은 필요할 것이다. 그래서 Logcat 에서는 Filter Configuration 을 통해서 필터링을 할 수 있도록 도와주기도 하지만, 굳이 만들지 않아도 정규식으로 간단하게 조회할 수 있다는 것이다.

바로 이 창에다가 정규식을 입력하면 된다.

 

정규식을 어떻게 짜야 할까 생각을 할텐데, 먼저 Logcat 의 형식을 보도록 하자

2022-05-16 11:01:37.791 10128-10145/? I/System.out: Broadcast completed: result=0

- 2022-05-16 11:01:37.791 : Logcat 에 출력되는 시점

- 10128-10145/? : 돌아가는 앱의 PID 부분

- I/System.out : Log 레벨과 태그 부분

- Broadcast ..... : Log 내용

 

이 검색창에 문자열을 입력을 하게 되면, Logcat 은 어쨌든 일반 텍스트이기 때문에, 앞 문자인 날짜 형식부터 읽어들이게 된다. 여기서 필요한 내용을 정규식을 통하여 필터링해줄 수 있는데, 그 부분이 바로 [Log 레벨과 태그 부분] 을 이용하는 것이다

 

형식이 일정하기 떄문에 정규식을 짜는데에는 어렵지가 않다. 큰 틀을 짜본다면 이렇게 짤 수 있다.

\w+/(TAG_NAME)

TAG_NAME 에는 필터링하고자 하는 태그명을 넣어주면 되는데, 필터링 하고자하는 태그가 여러 개인 경우에는 정규식에서 OR 를 담당하고 있는 '|' 를 사용하도록 한다.

 

간단하게 사용하고 있는 걸로는,

\w+/(AndroidRuntime|System.(out|err))

이거를 사용하고 있다. 에러 로그만 확인하면 좋을 것 같아서 3가지 유형의 태그를 출력하도록 구성하였다.

반응형
Comments