로그인

검색

JAVA/Android
2013.05.28 11:05

logcat 사용법

MoA
조회 수 4054 추천 수 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 5340
68 Web [Javascript] 비동기, Promise, async, await 확실하게 이해하기 OBG 2022.05.27 397
67 Web How to send dynamic charts with a Slack bot OBG 2022.05.31 518
66 서버 Building Pitaya, Wildlife’s own scalable game server framework OBG 2022.06.07 587
65 Database What's the difference between comma separated joins and join on syntax in MySQL? OBG 2022.06.09 870
64 서버 Golang Tutorial for Node.js Developers, Part I.: Getting started OBG 2022.06.16 464
63 Tool/etc "Node.js를 떠나며" - express를 만든 TJ의 글 OBG 2022.06.23 516
62 Deeplearning 파이썬 머신러닝 무료 강의 (7시간) OBG 2022.07.06 460
61 Deeplearning 직접 보고 추천하는 머신러닝 & 딥러닝 & 수학 총정리(2022) OBG 2022.07.24 4282
60 Deeplearning 강화학습 학습 관련 정리 OBG 2022.08.10 734
59 Deeplearning Keras를 활용한 주식 가격 예측 OBG 2022.09.02 512
58 Tool/etc AWS 망 분리하기 OBG 2022.09.06 524
57 Deeplearning RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED ... OBG 2022.09.06 595
56 Web Creating A Fixed-Length Queue In JavaScript Using Arrays OBG 2022.09.14 569
55 Deeplearning Play Super Mario Bros with a Double Deep Q-Network OBG 2022.09.15 563
54 Python 2048 Game in Python OBG 2022.09.22 583
53 Deeplearning Stable Diffusion OBG 2022.09.27 601
52 Deeplearning The State of AI & Art 2022 1 OBG 2022.10.06 559
51 Tool/etc AWS VPC 피어링 OBG 2022.11.03 955
50 Deeplearning 시계열 데이터 예측 모델 OBG 2022.11.08 454
49 Web 카카오톡 웹버전 만들기 OBG 2022.11.09 761
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 Next
/ 15