본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] Logcat 에서 로그를 제대로 찍지 않아요!

by 돼지왕 왕돼지 2019. 5. 24.
반응형

[android] Logcat 에서 로그를 제대로 찍지 않아요!


android logcat chatty, android studio, chatty identical lines, chatty module, IDE, identical lines, logcat -P, persist.logd.filter, ro.logd.filter, setprop, spam, [android] Logcat 에서 로그를 제대로 찍지 않아요!

-

for(i 1..10){
    Log.e("cklee", "MMM gamza")
}

Kotlin 으로 위와 같은 코드를 짜서 돌려보았더니... MMM gamza 가 두번만 찍힌다...



-

이 무슨 기괴한 일인가 싶어 "MMM gamza $i" 와 같이 i 값을 포함해서 찍도록 했더니..

안정적으로 1~10 까지 찍힌다..



-

사실 처음 이 현상을 접할때는 coroutine 에서 이 로직을 돌렸기 때문에.. coroutine 관련된 compile 버그인가 싶었는데..

단순 kotlin 코드만 돌렸는데도 동일현상이 보여서 kotlin 버그인가 싶었다.

그런데.. 사실 이렇게 간단한 로직을 버그를 낼 정도로 멍청한 kotlin 은 아니라고 믿고, log 를 분석해보았다.

그러다가 범인을 발견했다.


04-15 16:41:56.038 17446 17446 E cklee   : MMM Gamza

04-15 16:41:56.039 17446 17446 I chatty  : uid=10214(com.cklee.test) identical 9 lines

04-15 16:41:56.039 17446 17446 E cklee   : MMM Gamza


"chatty" 라는 이름으로 동일한 line 을 9번 찍었다는 로그가 있다.....



-

Googling 을 하다가 이곳에서 이런 정보를 얻게 된다.

We declared an application as too chatty once it logs more than 5 lines a second. Please file a bug against the application's owner that is producing this developer-verbose-debug-level class logging spam. The logs are 256KB, that means the application is creating a DOS attack and shortening the logs timepan to 6 seconds(!) making it useless for all others. A bug must be lurking in the application that needs to be addressed, the owner will appreciate finding out.


해석하면, 1초 안에 5라인 이상의 log 를 출력할 경우 spam 으로 간주하고 출력하지 않는다는 것이다.

현재 정착된 제약사항의 규칙은 정확히 모르겠지만, 여튼 chatty 가 filter 를 하고 있음은 분명하다.



-

그래서 이것을 방지하려면? logcat 을 실행할 때 -P 옵션을 주거나,

> adb locat -P ""


또 다른 방법으로는 아래와 같이 property 자체를 바꿔버리는 방법도 있다고는 하는데...

> adb shell setprop ro.logd.filter disable

> adb shell setprop persist.logd.filter disable


실제 둘 다 적용결과 둘다 invalid 하다.



-

여튼.. 현재로써는 그냥 chatty 가 있다는 것을 인지하고 로그를 봐야한다는 것을 주의하는 정도로 만족해야겠다.




반응형

댓글