2013-03-28 3 views
1

내 응용 프로그램에서 장치 로그를 읽는 기능을 구현 중입니다. 프로그래밍 방식으로 장치 로그 필터링

는이 목적을 위해 나는 Reading logs programatically 도움을 촬영했다. 이 코드 스 니펫은 장치 로그 (실행중인 모든 프로세스의 로그)를 제공합니다. 그게 잘하고 일하는.

이제 장치 로그에서 응용 프로그램 로그을 필터링하려고합니다. 그래서 나는 어떻게 그것을 progaramatically 할 수 있습니까?

답변

1

logcat 참조를 확인 했습니까? http://developer.android.com/tools/debugging/debugging-log.html#alternativeBuffershttp://developer.android.com/tools/help/logcat.html

당신은

public class LogTest extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    try { 
     Process process = Runtime.getRuntime().exec("logcat -b main -d"); 
     BufferedReader bufferedReader = new BufferedReader(
     new InputStreamReader(process.getInputStream())); 

     StringBuilder log=new StringBuilder(); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
     log.append(line); 
     } 
     TextView tv = (TextView)findViewById(R.id.textView1); 
     tv.setText(log.toString()); 
    } catch (IOException e) { 
    } 
    } 
} 

모두 당신이해야 할 당신의 명령을 지정하는 것입니다 시도 할 수 있습니다. adb에서 실행하여 명령을 테스트 할 수 있습니다. 그것을 더 자세히 보시려면 http://developer.android.com/tools/debugging/debugging-log.html#filteringOutput

+1

'logcat -b main -d' 설명해 주시겠습니까? -b와 main은 무엇입니까? –

+1

메인은 일반적인 응용 프로그램 로그입니다. 응용 프로그램 수준에서. 시스템 로그 및 커널 로그가 여기에 포함되어 있지 않습니다. –

0

1) 로그를 프로그래밍 방식으로 읽는 것은 아이스크림 샌드위치에서 작동하지 않습니다.

2) PackageManager을 사용하면 패키지 관리자가 설치된 응용 프로그램의 패키지 이름을 가져올 수 있습니다.

3) 실행중인 프로세스 목록을 얻으려면 ActivityManager을 사용하십시오.

실행중인 프로세스와 응용 프로그램의 패키지 이름을 일치시키고 프로세스 ID를 찾습니다. 패키지 이름 또는 프로세스 ID별로 대상 앱에 속한 로그를 필터링하십시오.

이것은 단지 큰 그림입니다.

+0

ICS에서 로그의 사용을 중단하는 데 필요한 설명서가 있습니까? 공유하십시오 –

+0

죄송합니다. 보안 제한으로 인해 수행 할 수 없습니다. –

관련 문제