메뉴 건너뛰기

OBG

Programming

JAVA/Android
2013.05.28 11:05

logcat 사용법

MoA
조회 수 3461 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

adb logcat -s 필터명:옵션

 

옵션의 종류는 다음과 같다.

V,D,I,W,E,F,S

각각 Verbose, Debug, Info, Warn, Error, Fatal, Silent를 의미한다.

 

소스코드에서

Log.d("update", "abcdefg");

이런 식으로 로그를 걸어두었으면,

 

adb logcat -s update:D

이런 식으로 Logcat을 콘솔에서 구동시켜 해당 로그만 조회할 수 있다.

 

* 시간 정보를 보는 방법

logcat -v time

 

Enabling logcat Logging

The Android logging system provides a mechanism for collecting and viewing system debug output. Logs from various applications and portions of the system are collected in a series of circular buffers, which then can be viewed and filtered by the logcatcommand.

Using logcat Commands

You can use the logcat command to view and follow the contents of the system's log buffers. The general usage is:

[adb] logcat [<option>] ... [<filter-spec>] ...

The sections below explain filter specifications and the command options. See Listing of logcat Command Options for a summary of options.

You can use the logcat command from your development computer or from a remote adb shell in an emulator/device instance. To view log output in your development computer, you use

$ adb logcat

and from a remote adb shell you use

# logcat

Filtering Log Output

Every Android log message has a tag and a priority associated with it.

  • The tag of a log message is a short string indicating the system component from which the message originates (for example, "View" for the view system).
  • The priority is one of the following character values, ordered from lowest to highest priority:
    • V — Verbose (lowest priority)
    • D — Debug
    • I — Info (default priority)
    • W — Warning
    • E — Error
    • F — Fatal
    • S — Silent (highest priority, on which nothing is ever printed)

You can obtain a list of tags used in the system, together with priorities, by running logcat and observing the first two columns of each message, given as <priority>/<tag>.

Here's an example of logcat output that shows that the message relates to priority level "I" and tag "ActivityManager":

I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}

To reduce the log output to a manageable level, you can restrict log output using filter expressions. Filter expressions let you indicate to the system the tags-priority combinations that you are interested in — the system suppresses other messages for the specified tags.

A filter expression follows this format tag:priority ..., where tag indicates the tag of interest and priority indicates theminimum level of priority to report for that tag. Messages for that tag at or above the specified priority are written to the log. You can supply any number of tag:priority specifications in a single filter expression. The series of specifications is whitespace-delimited. The default output is to show all log messages with the Info priority (*:I).

Here's an example of a filter expression that suppresses all log messages except those with the tag "ActivityManager", at priority "Info" or above, and all log messages with tag "MyApp", with priority "Debug" or above:

adb logcat ActivityManager:I MyApp:D *:S

The final element in the above expression, *:S, sets the priority level for all tags to "silent", thus ensuring only log messages with "View" and "MyApp" are displayed. Using *:S is an excellent way to ensure that log output is restricted to the filters that you have explicitly specified — it lets your filters serve as a "whitelist" for log output.

The following filter expression displays all log messages with priority level "warning" and higher, on all tags:

adb logcat *:W

If you're running logcat from your development computer (versus running it on a remote adb shell), you can also set a default filter expression by exporting a value for the environment variable ANDROID_LOG_TAGS:

export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"

Note that ANDROID_LOG_TAGS filter is not exported to the emulator/device instance, if you are running logcat from a remote shell or using adb shell logcat.

Controlling Log Output Format

Log messages contain a number of metadata fields, in addition to the tag and priority. You can modify the output format for messages so that they display a specific metadata field. To do so, you use the -v option and specify one of the supported output formats listed below.

  • brief — Display priority/tag and PID of originating process (the default format).
  • process — Display PID only.
  • tag — Display the priority/tag only.
  • thread — Display process:thread and priority/tag only.
  • raw — Display the raw log message, with no other metadata fields.
  • time — Display the date, invocation time, priority/tag, and PID of the originating process.
  • long — Display all metadata fields and separate messages with a blank lines.

When starting logcat, you can specify the output format you want by using the -v option:

[adb] logcat [-v <format>]

Here's an example that shows how to generate messages in thread output format:

adb logcat -v thread

Note that you can only specify one output format with the -v option.

Viewing Alternative Log Buffers

The Android logging system keeps multiple circular buffers for log messages, and not all of the log messages are sent to the default circular buffer. To see additional log messages, you can start logcat with the -b option, to request viewing of an alternate circular buffer. You can view any of these alternate buffers:

  • radio — View the buffer that contains radio/telephony related messages.
  • events — View the buffer containing events-related messages.
  • main — View the main log buffer (default)

The usage of the -b option is:

[adb] logcat [-b <buffer>]

Here's an example of how to view a log buffer containing radio and telephony messages:

adb logcat -b radio

Viewing stdout and stderr

By default, the Android system sends stdout and stderr (System.out and System.err) output to /dev/null. In processes that run the Dalvik VM, you can have the system write a copy of the output to the log file. In this case, the system writes the messages to the log using the log tags stdout and stderr, both with priority I.

To route the output in this way, you stop a running emulator/device instance and then use the shell command setprop to enable the redirection of output. Here's how you do it:

$ adb shell stop
$ adb shell setprop log
.redirect-stdio true
$ adb shell start

The system retains this setting until you terminate the emulator/device instance. To use the setting as a default on the emulator/device instance, you can add an entry to /data/local.prop on the device.

Listing of logcat Command Options

OptionDescription
-b <buffer>Loads an alternate log buffer for viewing, such as event or radio. The main buffer is used by default. See Viewing Alternative Log Buffers.
-cClears (flushes) the entire log and exits.
-dDumps the log to the screen and exits.
-f <filename>Writes log message output to <filename>. The default is stdout.
-gPrints the size of the specified log buffer and exits.
-n <count>Sets the maximum number of rotated logs to <count>. The default value is 4. Requires the -r option.
-r <kbytes>Rotates the log file every <kbytes> of output. The default value is 16. Requires the -f option.
-sSets the default filter spec to silent.
-v <format>Sets the output format for log messages. The default is brief format. For a list of supported formats, see Controlling Log Output Format.

원하는 로그만 보는 법(테그 사용법)

  adb logcat SJ:V 

이렇게 설정하면 Tag가 SJ인 로그중 Vervose 이상인 로그가 보인다.

 (Log.i( "SJ", ... ) 출력한 로그먄 보여진다 )

[출처] adb logcat ( filtering log output )|작성자 홍길동

(

(테그의 우선순위 :  Verbose / Debug / Info / Warning / Error / Fatal / Silent)

 adb logcat SJ:V  SJMAIN:V *:S

이렇게 복수의 필터도 설정 가능 

SJ, SJMAIN 테그를 제외한 다른 메세지는 보지 않는다라고 설정한 상태

 

자, 이렇게 필터를 항상 command line에서 입력할때 마다 써야 하는가하면

그렇지는 않다

이렇게 하면된다.

메뉴얼에서는 환경변수를 export하면된다고 기술되어있는데

이는 리눅스에서 동작하는 상황이므로 대다수의 윈도우 사용자는 안되는 줄 알고 있는데

이렇게 하면 된다.

만약에 아래 같은 필터를 설정한다면

 adb logcat SJ:V  SJMAIN:V *:S

 

환경 변수 ANDROID_LOG_TAGS 세팅하여 놓으면

export ANDROID_LOG_TAGS= SJ:V  SJMAIN:V *:S

이후로는 

 adb logcat 

라고만 명령어를 쳐도 필터가 세팅된 상태로 동작한다.

 

이는 한글을 보기 위해 코드페이지를 (chcp 65001) 유니코드로 바꾼후에

batch 파일(.bat)이 동작하지 않는 상황에서 매우 유용하다.

set 변수는 cmd 창을 닫기 전까지

항상 유효하다.

중간에 

set ANDROID_LOG_TAGS= ~~~~

로 변경도 가능하다.

 

 

혹시라도 time stemp를 붙이고 싶으면

   adb logcat -v time

 

작업내용을 File로 저장해야 하는 경우 방법

파일 패스는 컴퓨터 패스가 아닌 안드로이드 자체 패스를 이용해야한다.

  adb logcat -f /data/data/sj.chess/Log.txt

 (일반적으로 data/data/apkName 은 쓰기 권한이 있으므로 여기에 남기면 됩니다.)

 아니면 특정 디렉토리에 쓰기 권한을 주고 그쪽으로 모아도 됩니다.


http://www.placeo.pe.kr/index.php?document_srl=2253&mid=DevelopmentAndroid


공식사이트 로그캣 문서 번역 자료

http://codemuri.tistory.com/entry/%EB%B2%88%EC%97%AD-Log-%EC%9D%BD%EA%B3%A0-%EC%93%B0%EA%B8%B0

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 Tool/etc Programming 게시판 관련 2 MoA 2014.11.01 1591
282 JAVA/Android XML 파싱하기 MoA 2013.08.06 7042
281 API/MFC Visual C++ 시리얼 통신(RS-232) 강좌 (1) MoA 2013.07.28 6652
280 Library AS3 Code Library MoA 2013.10.11 4995
279 API/MFC Sleep() 함수 대신 프로그램 딜레이 시키기 (Wait) MoA 2013.07.28 4607
278 API/MFC Visual C++ 시리얼 통신(RS-232) 강좌 (2) 1 MoA 2013.07.28 4419
277 API/MFC MFC 리본 사용하기 (아이콘 제작 포함) 너울 2012.02.09 4304
» JAVA/Android logcat 사용법 MoA 2013.05.28 3461
275 API/MFC 프린터 출력하기 MoA 2013.10.16 3383
274 Deeplearning 직접 보고 추천하는 머신러닝 & 딥러닝 & 수학 총정리(2022) OBG 2022.07.24 3096
273 Python [액션게임 만들기] 3. 클래스 다이어그램 기초 file OBG 2014.05.07 2668
272 API/MFC DLL 생성 시 주의 MoA 2013.08.22 2659
271 Python [농장게임 만들기] 10. 상점을 추가하자 file MoA 2014.05.01 2635
270 API/MFC Thread와 SendMessage를 통해 DeadLock을 만드는 방법 MoA 2013.07.28 2600
269 API/MFC 다국어를 위한 StringTable, LoadString 1 MoA 2013.12.22 2389
268 C/C++ C 언어의 문자형 변수 char - 8비트 정수형 변수 MoA 2013.07.28 2169
267 Python [농장게임 만들기] 3. 배경을 그리자 6 file MoA 2014.04.28 2033
266 Python 파이썬에서 C모듈 사용하기 MoA 2014.02.10 1899
265 API/MFC 프로세스 - 생성과 종료 그리고 이것 저것 너울 2011.10.12 1807
264 Site 졸업작품 및 각종 과제물 프로그램은 어떻게 만들어야 하나? (윈도우즈 응용프로그램) MoA 2013.09.10 1611
263 API/MFC 다른 스레드에서 메인다이얼로그 포인터 받아오기 AfxGetMainWnd() 1 MoA 2013.07.28 1574
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15
위로