以编程方式应用logcat过滤器

时间:2012-02-15 14:02:54

标签: android logcat android-logcat

我需要以编程方式使用过滤器转储logcat。我应用了adb logcat -s“TAGNAME”,但应用程序只是“挂起”。有一个类似的线程,但没有解决方案:Read filtered log cat(Programmatically)?

        try {
            Process process = Runtime.getRuntime().exec("logcat -s XXX");
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(process.getInputStream()));

            StringBuilder log = new StringBuilder();
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                log.append(line);
                log.append(FragmentLog.LINE_SEPARATOR);
            }

            ((TextView) tv).setText(log.toString());

        } catch (IOException e) {
            ((TextView) tv).setText(R.string.default_blank);
        }

2 个答案:

答案 0 :(得分:3)

我正在使用其他方式让我的应用运行起来。以下是代码,以防有人想知道。

    try {               
        Process process = Runtime.getRuntime().exec("logcat -d");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

        String line;

        Pattern pattern = Pattern.compile("XXX", 0);

        while ((line = bufferedReader.readLine()) != null) {
            if (patternu != null
                    && !pattern.matcher(line).find()) {
                continue;
            }
            log.append(line);
            log.append('\n');
        }

    } catch (IOException e) {

    }

答案 1 :(得分:2)

首先关闭此命令将流式传输logcat并且不会转储它。因此它永远不会退出运行。此外,如果没有要报告的内容,BufferedReader可能正在等待整行进入,所以你阻止。