[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 가 있다는 것을 인지하고 로그를 봐야한다는 것을 주의하는 정도로 만족해야겠다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[RxJava] #2 Observable 처음 만들기 (0) | 2019.06.03 |
---|---|
[RxJava] #1 리액티브 프로그래밍 소개 (0) | 2019.05.31 |
[android] dialog style 속성 (0) | 2019.04.27 |
[android] concurrent document에 대해 알아본다. (0) | 2019.04.25 |
[android] QUOTED-PRINTABLE 의 예외처리 =\r\n (0) | 2019.04.10 |
댓글