본문 바로가기

소프트웨어/안드로이드

[Logcat] 안드로이드 로그 최대 출력 가능 길이

일반적으로 안드로이드에서 로그는 다음과 같은 static method를 호출하여 출력합니다.

 

Log.v (VERBOSE)
Log.d (DEBUG)
Log.i (INFORMATION)
Log.w (WARNING)
Log.e (ERROR)
Log.wtf (ASSERT/FATAL)

 

단, 출력할 String의 길이가 일정 수준 이상이면 더 이상 표시가 되지 않습니다.

 

/dev/log/events의 내용을 보면 아래와 같으며 실제로는 4076 bytes까지만 출력됩니다.

#define LOGGER_ENTRY_MAX_LEN (4*1024)
#define LOGGER_ENTRY_MAX_PAYLOAD (LOGGER_ENTRY_MAX_LEN - sizeof(struct logger_entry))

 

따라서 적절한 시점에 로그를 끊어주고 출력해주는 것이 좋습니다.

 

다음과 같이 분리하도록 출력하게 하면 긴 매우 긴 String도 누락 없이 출력할 수 있습니다.

final int MAX_LEN = 2000; // 2000 bytes 마다 끊어서 출력
int len = s.length();
if(len > MAX_LEN) {
    int idx = 0, nextIdx = 0;
    while(idx < len) {
        nextIdx += MAX_LEN;
        Log.e(TAG, s.substring(idx, nextIdx > len ? len : nextIdx));
        idx = nextIdx;
    }
} else {
    Log.e(TAG, mFuncTag, s);
}

 

이외의 방법은 아래 링크를 참조하여 자유롭게 사용하시면 됩니다.

 

참고

https://stackoverflow.com/questions/8888654/android-set-max-length-of-logcat-messages

 

Android - Set max length of logcat messages

By default, it seems that logcat will truncate any log message that it considers to be "too long". This happens both inside of Eclipse and when running logcat on the command line using adb -d logc...

stackoverflow.com