Log 분석

5England·2021년 9월 25일
0

Android

목록 보기
3/18
post-thumbnail

debug

간단한 프로그램을 구현해본 경험이 있을 것이다.

rand() % 100을 통해 0~100까지의 숫자값을 randNum에 할당하고 있다. 하지만 프로그램을 돌려보니 랜덤 값이 이상하게 생성되는 느낌이 든다. 랜덤 값이 잘 생성되고 있는지 확인해보고 싶어졌다. 우리는 이럴 때 어떻게 했었는가?

간단하다. 콘솔창에 randNum을 출력해서 확인해본다. 우리는 이렇게 확인해야 할 부분에 대해 출력해보곤 했다. 이제 Log 분석에 대한 얘기를 해도 되겠다. 우리가 해오던 이러한 디버깅 방법과 다를 것 없다. 쉬운 얘기다. 안드로이드 문서로 가보자.

해당 문서 또한 앱 디버그 카테고리에 위치한 것을 볼 수 있다. 이를 통해 기존 콘솔 출력으로 디버깅하던 행위를, 안드로이드 스튜디오에선 Logcat이라는 것을 통해 할 수 있구나! 정도로 감을 잡고 글을 읽으면 좋겠다.

안드로이드 스튜디오의 하단에 위치한 Logcat을 클릭하면, Logcat 창이 뜨게 된다. 이 창에서는 시스템 메세지Log 클래스를 사용한 앱의 추가 메세지가 표시된다. 또한 Logcat 창의 상단을 보면 검색바가 있는데, 이 곳에서 특정 Log를 검색할 수 있다. Logcat 창에 Log가 표시되고, 검색도 가능하다고 한다. 무언가.. 메세지를 뜻하는 것 같다. Log란 무엇일까?

Log 클래스는 로그 출력을 보내기 위한 API라고 한다.
로그는 출력되는 메세지이다. 스크롤을 좀 더 내리니, 로그 클래스의 종류들로 보이는 상수들이 존재한다.

아, Log 클래스는 ASSERT, DEBUG, ERROR, INFO, VERBOSE, WARN 등 개발 측면에서 다양한 종류의 로그(메세지 or 기록) 을 출력할 수 있게 해주는 클래스이며,
Debug 관련 Log는 Log.d라는 메소드를 사용해서 작성 및 출력할 수 있고,
ERROR 관련 Log는 Log.e라는 메소드를 사용해서 작성 및 출력할 수 있 듯,

메소드를 통해 각 종류에 맞는 로그를 작성해서 로그캣에 띄울 수 있구나!

정도로 이해하면 된다.

Log 클래스에 Log.d() 메소드가 보인다. 디버그를 위해 사용되며, 가장 흔하게 사용되는 Log 메소드라고 보면 된다. d()를 통해 사용 방법을 간단하게 알아보자.

val randNum : Int = random.nextInt(101)
Log.d("randNum", randNum.toString())

난수가 잘 생성되는지 확인하기 위해 Log.d() 메소드에
tag 인자값으로 "randNum", msg 인자값으로 randNum.toString()을 입력한 코드를 작성했다.

프로그램 실행 후 Logcat으로 가본다.
스크롤을 내리면서 해당 로그를 찾아봐도 되지만, 검색바에 태그값인 randNum을 검색해본다.
"date time PID-TID/D/randNum: 26" 과 같은 로그가 찍혀있을 것이다.

각 종류의 로그는 해당 목적으로 사용된다. 또한, 태그에 대해 안드로이드가 권장하는 사항이 있는데,

private const val TAG = "MyActivity"
...
Log.i(TAG, "MyClass.getView() — get item number $position")
  • 첫 번째 매개변수에 TAG 상수를 선언해 사용하는 것을 추천한다고 한다.
    • 또, 태그 이름이 23자를 초과하는 경우 logcat 출력에서 잘린다고 한다.

로그 사용 초급 수준인 글은 여기까지이다.
Log를 잘 활용해 행복 디버깅하길 바란다!

profile
한 눈에 보기 : https://velog.io/@dongwan999/LIST

0개의 댓글