2011-07-27 4 views
0

나는 다음과 같은 코드를 사용하여 안드로이드 응용 프로그램에서 메인 로그를 추출 할 수 있었다 : 나는 이벤트 로그를 추출하기 위해 같은 방법을 사용하려고하면Android 애플리케이션에서 이벤트 로그를 추출하려면 어떻게해야합니까?

그러나
String[] LOGCAT_CMD = new String[] { 
    "logcat", 
    "-d", 
    "MyApplication:E", 
    "*:S"}; 
    Process logcatProc = null; 

    try { 
     logcatProc = Runtime.getRuntime().exec(LOGCAT_CMD); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return ""; 
    } 
String lineSeparator = System.getProperty("line.separator"); 

    StringBuilder strOutput = new StringBuilder(); 
    try { 
     InputStream ireader = logcatProc.getInputStream(); 
     int temp; 
     while ((temp = ireader.read()) != -1){ 
      while (temp != 64){ 
       strOutput.append((char) temp); 
       temp = ireader.read(); 
      } 
      strOutput.append(lineSeparator); 
      line = strOutput.toString(); 
      writeLine(line); 
      strOutput = new StringBuilder(); 
     } 

, 그것은 작동하지 않습니다. 문제가 무엇인지 모르겠지만 LOGCAT_CMD를 다음과 같이 변경하고 응용 프로그램을 실행하면 ireader.read()가 즉시 -1을 반환하고 완료됩니다.

String[] LOGCAT_CMD = new String[] { 
      "logcat", 
      "-b", 
      "events", 
      "-d", 
      "[1]:I", 
      "*:S" 
      }; 

누가 도와 주시겠습니까?

답변

1

체크 아웃 this code을 확인하십시오. 특히 SendLogActivity.java에서 collectAndSendLog()를 살펴보십시오.

+0

나는 이것이 내가 필요한 것이라고 생각하지 않는다. LOGCAT_CMD를 "logcat -b main -d"로 설정하면 정상적으로 작동합니다. 그러나 "logcat -b events -d"또는 "logcat -b radio -d"를 시도하면 InputStream ireader가 바로 -1을 반환하고 완료됩니다. – Help