https://offbyone.tistory.com/261


모든 프로그래밍에서 디버깅은 빠지지 않는 작업 입니다. 안드로이드 프로그램도 Java를 시용하므로 많이 사용하던 System.out.println(); 을 사용하여 값을 출력해 볼 수 있습니다. 하지만 Android는 Logcat이라는 디버그 메세지를 표시하는 logcat Monitor 를 포함하고 있습니다. 이 Logcat을 이용하여 로그를 남기는 방법을 알아 봅니다.



1. 많이 쓰던 방식 System.out.println();


이걸로도 원하는 값을 출력할 수 있습니다.





2. Logcat 기본적인 사용법




- Log 객체를 사용하기 위해서 import 합니다.


import andorid.util.Log;


- 로그 메소드의 첫 번째 인자로 사용할 상수 TAG 를 정의합니다. 메세지들을 구분하는 구분 값으로 사용되어 집니다. 보통 현재 클래스의 이름을 많이 사용합니다. TAG의 길이가 23자를 넘으면 logcat 출력에서 잘립니다.


private static final String TAG = "MainActivity";


- 로그를 출력합니다. 첫번째 인자는 TAG 이고, 두 번째 인자가 로그로 출력될 메세지 입니다. 이 예제에서는 textView에 보여지는 값을 출력해 보았습니다.


Log.d(TAG, textView.getText().toString());


사용할 수 있는 메소드는 로그 레벨에 따라 여섯가지가 있습니다.


  * Log.e(String, String)   (ERROR)

  * Log.w(String, String)   (WARNING)

  * Log.i(String, String)   (INFO)

  * Log.d(String, String)   (DEBUG)

  * Log.v(String, String)   (VERBOSE)

  * Log.wtf(String, String) (ASSERT)



- 로그 포맷은 다음 형식을 가집니다.


01-17 23:33:46.712 4361-4361/com.tistory.pentode.helloworld D/MainActivity: OK 버튼이 눌려졌습니다.


date time PID-TID/package priority/tag: message


  * date : 날짜

  * time : 시간

  * PID : 프로세스 아이디

  * TID : 쓰레드 아이디

  * pakage : 클래스의 패키지

  * priority : 우선 순위 - V(Verbose) < D(Debug) < I(Info) < W(Warning) < E(Error) < A(Assert)

  * tag : 메소드의 첫번째 인자인 TAG 입니다.

  * message : 메소드의 두 번째 인자인 message 입니다.



3. Logcat 필터기능 사용하기




- 1 번 콤보박스에서 로그 레벨을 선택하여 원하는 레벨의 로그만 볼수 있습니다.

- 2 번 입력박스에 검색어를 입력하여 메세지를 검색할 수 있습니다.

- 3 번 로그 필터 콤보박스에서 필터 옵션을 선택할 수 있습니다.

  * Show only selected application - 앱 코드에서 생성되는 메시지만 표시합니다(기본 설정). logcat Monitor는 활성 앱의 PID를 사용하여 로그 메시지를 필터링합니다.

  * No Filters - 아무런 필터도 적용하지 않습니다. logcat Monitor는 개발자가 선택한 프로세스에 상관없이 기기에서 수신되는 모든 로그 메시지를 표시합니다.

  * Edit Filter Configuration - 사용자설정 필터를 생성하거나 수정합니다. 예를 들어, 두 앱의 로그 메시지를 동시에 볼 수 있는 필터를 생성할 수도 있습니다.



이상으로 안드로이드 프로그램에서 Logcat 을 사용하여 로그를 남기는 방법에 대해 알아보았습니다.