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 *:S
System.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
. 일반적으로 응용 프로그램을 개발할 때는 디버깅 가능한 프로세스입니다. 가끔씩 나는 이것에 문제가 있고 다음을 수행하십시오.
-
Tools
->Android
->Enable ADB Integration
.
이미 활성화되어 있으면 끄고 다시 켭니다. -
모바일 장치를 분리했다가 다시 연결하십시오.
정규식과 디버그 수준을 통해 필터링하는 옵션도 있습니다
2. 로그 캣 색상
adb logcat
터미널 기반 솔루션을 사용하려는 경우 멋진 파이썬 래퍼입니다 . 그것에 대한 좋은 점은 여러 구성을 저장하고 간단히 재사용 할 수 있다는 것입니다. 필터링 기준 tags
은 매우 안정적입니다. 필터링하여 package
하나 이상의 앱 로그 만 볼 수 있지만 앱을 시작 logcat-color
하기 직전에 시작합니다.
기존 답변 :
이전 답변에 댓글을 달 수 없으므로 새 답변을 게시 할 것입니다. 이것은 PID Mulcahy 의 답변에 대한 주석 이며 adb shell ps
PID 열은 가변적 이므로 대부분의 장치에서 작동하도록 명령을 변경하는 방법을 보여줍니다 .
참고 : 아래 명령은 많은 장치를 연결 한 경우에 작동합니다. 그래서 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