Android의 내 응용 프로그램에서 보낸 메시지 만 가져 오려면 LogCat을 필터링 하시겠습니까? 프로그램에서도 메시지를 볼 수 있습니다. 이것을 필터링하고

Android 용 ADT와 함께 Eclipse와 함께 Logcat을 사용하면 다른 많은 응용 프로그램에서도 메시지를 볼 수 있습니다. 이것을 필터링하고 내 응용 프로그램의 메시지 만 표시하는 방법이 있습니까?



답변

패키지 이름은 고유하므로 태그와 함께 함수를 패키지 이름으로 사용하고 패키지 이름으로 필터링 할 수 있습니다Log .

참고 : 빌드 도구 21.0.3부터 TAGS가 23 자 이하로 제한되어 더 이상 작동하지 않습니다.

Log.<log level>("<your package name>", "message");

adb -d logcat <your package name>:<log level> *:S

-d는 실제 장치를 -e나타내며 에뮬레이터를 나타냅니다. 있다면 당신이 사용할 수있는 실행 1 개 이상 에뮬레이터 -s emulator-<emulator number>(예 -s emulator-5558)

예: adb -d logcat com.example.example:I *:S

또는 System.out.print메시지를 로그에 보내는 데 사용 하는 경우 adb -d logcat System.out:I *:SSystem.out에 대한 호출 만 표시 하는 데 사용할 수 있습니다 .

https://developer.android.com/studio/command-line/logcat.html 에서 모든 로그 수준과 자세한 정보를 찾을 수 있습니다.

http://developer.android.com/reference/android/util/Log.html

편집 : 나는 총을 약간 뛰어 넘고 Eclipse에서 logcat에 대해 묻는다는 것을 깨달았습니다. 위에서 게시 한 것은 명령 줄에서 adb를 통해 logcat을 사용하는 것입니다. 동일한 필터가 Eclipse로 전송되는지 확실하지 않습니다.


답변

리눅스와 OS X

ps / grep / cut을 사용하여 PID를 잡고 해당 PID로 logcat 항목을 grep하십시오. 내가 사용하는 명령은 다음과 같습니다.

adb logcat | grep -F "`adb shell ps | grep com.asanayoga.asanarebel  | tr -s [:space:] ' ' | cut -d' ' -f2`"

(동일한 숫자를 포함하는 관련되지 않은 로그 라인의 이론적 문제를 피하기 위해 정규식을 더 향상시킬 수는 있지만 결코 문제가되지 않았습니다)

여러 프로세스를 일치시킬 때도 작동합니다.

윈도우

Windows에서는 다음을 수행 할 수 있습니다.

adb logcat | findstr com.example.package

답변

Android 7.0부터 logcat에는 –pid 필터 옵션이 있으며 pidof 명령을 사용할 수 있으므로 com.example.app을 패키지 이름으로 바꾸십시오.
(우분투 단말기 / Android 7.0부터)

adb logcat --pid=`adb shell pidof -s com.example.app`

또는

adb logcat --pid=$(adb shell pidof -s com.example.app)

pidof 명령에 대한 자세한 내용은
https://stackoverflow.com/a/15622698/7651532


답변

필터 추가

이름을 지정하십시오

필터를 선택하십시오.


답변

나를 위해 이것은 Mac에서 작동 Terminal
합니다. adb다음 터미널에 아래 명령을 입력 한 폴더로 이동하십시오.

./adb logcat MyTAG:V AndroidRuntime:E *:S

여기에서 모든 로그를 필터링 MyTAG하고AndroidRuntime


답변

5 월 17 일 업데이트

몇 년이 지났고 일이 바뀌 었습니다. 그리고 Eclipse는 더 이상 공식적으로 지원되지 않습니다. 따라서 여기에는 두 가지 최신 접근 방식이 있습니다.

1. 안드로이드 스튜디오


에서 Android monitor도구 상자, 당신은 로그 캣의 당을 필터링 할 수 있습니다 debuggable process. 일반적으로 응용 프로그램을 개발할 때는 디버깅 가능한 프로세스입니다. 가끔씩 나는 이것에 문제가 있고 다음을 수행하십시오.

  1. Tools-> Android-> Enable ADB Integration.
    이미 활성화되어 있으면 끄고 다시 켭니다.

  2. 모바일 장치를 분리했다가 다시 연결하십시오.

정규식과 디버그 수준을 통해 필터링하는 옵션도 있습니다

2. 로그 캣 색상

adb logcat터미널 기반 솔루션을 사용하려는 경우 멋진 파이썬 래퍼입니다 . 그것에 대한 좋은 점은 여러 구성을 저장하고 간단히 재사용 할 수 있다는 것입니다. 필터링 기준 tags은 매우 안정적입니다. 필터링하여 package하나 이상의 앱 로그 만 볼 수 있지만 앱을 시작 logcat-color하기 직전에 시작합니다.

기존 답변 :

이전 답변에 댓글을 달 수 없으므로 새 답변을 게시 할 것입니다. 이것은 PID Mulcahy 의 답변에 대한 주석 이며 adb shell psPID 열은 가변적 이므로 대부분의 장치에서 작동하도록 명령을 변경하는 방법을 보여줍니다 .

참고 : 아래 명령은 많은 장치를 연결 한 경우에 작동합니다. 그래서 device id필요합니다. 그렇지 않으면 괄호 ‘[‘, ‘]’를 생략하면됩니다.

1. pid 열을 찾으려면 다음을 입력하십시오.

adb [-s DEVICE_ID] shell ps | head -n 1

이제 PID의 열 번호를 기억하십시오. 번호 매기기는1 .

그런 다음 다음을 입력하십시오.

adb [-s DEVICE_ID] logcat | grep $(adb [-s DEVICE_ID] shell ps \
| grep "com.example" | awk -F" " ' {print $PUT_COLUMN_HERE}')

암기 한 열을 입력하기 만하면됩니다. PUT_COLUMN_HERE예를 들어$5

경고

응용 프로그램이 OS에서 새 PID를 가져 오기 때문에 응용 프로그램을 다시 실행할 때마다 두 번째 명령을 다시 실행해야합니다.


답변

이것은 git bash에서 나를 위해 일하고있다 :

$ pid=$(adb shell ps | grep <package name> | cut -c11-15) ; adb logcat | grep $pid