2017-03-22 6 views
0

다음 코드를 사용했지만 logcat의 첫 번째 줄만 출력합니다. "---- 메인 시작", 나머지 logcat은 캡처되지 않습니다.프로그래밍 방식으로 필터를 사용하여 logcat 읽기

"logcat -d -s myapp : I"를 명령 줄에서 실행하면 여러 행이 표시됩니다.

 String command = "logcat -d -s myapp:I"; 
     Process process = Runtime.getRuntime().exec(command); 


     BufferedReader bufferedReader = new BufferedReader(
      new InputStreamReader(process.getInputStream())); 
     ArrayList<String> lines = new ArrayList<>(); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
      Log.d(TAG, "Reading: " + line); // just prints "----beginning of main" 
      lines.add(line); 
     } 

왜 한 줄의 출력이 나옵니까?

답변

0

먼저 Android SDK의 일부가 아니기 때문에 logcat을 프로덕션 환경에서 실행하는 것이 신뢰할 수 없다는 점에 유의하십시오.

그 이상의 경우 개인 정보 및 보안상의 이유로 모든 로그에 액세스 할 수있는 권한이 없기 때문에 자신의 앱 (및 시스템의 일부만 포함)에서 로그 메시지 만받습니다.

+0

프로덕션 앱이 아니며 디버깅 용도로 사용됩니다. 어느 쪽이든 당신의 대답은 대답이 아닙니다. – Taranfx

+0

@Taranfx : 대답입니다. 메시지를받지 못하는 이유는 프로세스가 가져 오지 못하는 메시지에 대한 권한이 없기 때문입니다. 이것은 [거의 5 년 동안] (https://commonsware.com/blog/2012/07/12/read-logs-regression.html) 사례였습니다. 루팅 된 장치에서 실행중인 경우 AFAIK를 사용하여'su'를 사용하여'logcat'을 실행하고 개발 컴퓨터에서와 동일한 내용을 얻을 수 있습니다. – CommonsWare