1

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

为此,我从以编程方式阅读日志中获得了帮助。此代码段提供设备日志(所有正在运行的进程的日志)。那很好,可以工作。

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

4

2 回答 2

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

于 2013-03-28T07:18:16.510 回答
0

1) Ice Cream Sandwich 无法以编程方式读取日志。

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

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

将应用程序的包名称与正在运行的进程匹配,并找到进程 ID。并通过包名或进程ID过滤属于目标应用程序的日志。

这只是大图。

于 2013-03-28T07:18:49.023 回答