применение фильтра logcat программно - PullRequest
0 голосов
/ 15 февраля 2012

Мне нужно программно сбросить logcat с фильтром. Я применил adb logcat -s "TAGNAME", но приложение просто "зависло". есть похожая тема, но нет решения: Чтение отфильтрованного журнала cat (Программно)?

        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 ]

3 голосов
/ 21 февраля 2012

Я использую другой способ заставить мое приложение работать. Вот код, на случай, если кто-то захочет узнать.

    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) {

    }
2 голосов
/ 17 февраля 2012

Ну, во-первых, эта команда будет транслировать logcat и не будет ее выгружать.Следовательно, он никогда не перестанет работать.Кроме того, если нет содержимого для отчета, BufferedReader, вероятно, ожидает ввода полной строки, поэтому вы блокируете.

...