로그캣(Logcat)의 출력 길이 제한

로그캣은 한번에 출력할 수 있는 출력 길이 제한이 있다.  이 값은 단말에 따라 제한을 받는 것으로, 아래와 같은 명령어를 통해 확인할 수 있다.

>adb logcat -g
main: ring buffer is 2Mb (1Mb consumed), max entry is 5120b, max payload is 4076b
system: ring buffer is 256Kb (255Kb consumed), max entry is 5120b, max payload is 4076b

이 값 중에서 max entry와 max payload 부분에 영향을 받는다. 이 값은 커널에 하드코딩되어 있어 어플리케이션 개발자가 수정이 불가능하다.

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

로그가 짤리지 않고 모두 출력되길 바란다면, 로그를 적당히 잘라서 보여주는 방법이 가장 일반적이다.

아름답지는 않지만 아래와 같이 작성할 수 있다.

String msg = "your log message.";

while( msg.length() > 0 )
{
  if( msg.length() > 4000 )
  {
    Log.i( _tag, msg.substring( 0, 4000 ));
    msg = msg.substring( 4000 );
  }
  else
  {
    Log.i( _tag, msg );
  }
}

그 밖에

안드로이드 5부터 개발자 옵션을 통해 수정이 가능하다는 이야기가 있다. (확인필요)

참조

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.