以编程方式过滤设备日志

时间:2013-03-28 07:09:20

标签: android logging android-logcat

我正在实现在我的应用程序中读取设备日志的功能。

为此,我从 Reading logs programatically 获得了帮助。此代码段提供设备日志(所有正在运行的进程的日志)。这很好,工作。

现在我想从设备日志中过滤应用程序日志 那么我该如何以编程方式进行呢?

2 个答案:

答案 0 :(得分: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 :(得分:0)

1)以编程方式读取日志不适用于Ice Cream Sandwich。

2)使用PackageManager让软件包管理器获取已安装应用程序的软件包名称。

3)使用ActivityManager获取正在运行的进程列表。

将应用程序的程序包名称与正在运行的进程匹配,并查找进程ID。 并按包名称或进程ID筛选属于目标应用程序的日志。

这只是大局。