Android: фильтрация Logcat по тегу с использованием регулярного выражения

При регистрации мои теги всегда выглядят так:

com.myapp.SomeActivity

Для каждого оператора журнала я добавляю первую часть "com.myapp." к тегу класса, который делает вызов журнала. Например:

MyActivity extends Activity{

private static final String TAG = "MyActivity";

 public void someMethod(){
  LogWrapper.e(TAG, "Something is wrong here.");
 } 
}

Мой класс LogWrapper в основном делает следующее

public class LogWrapper {
 private static final String applicationTAG = "com.myapp.";

 public static void e(String classTag, String message){
  Log.e(applicationTAG + classTag, message);
 }
}

Итак, все, что я делаю, это добавляю статический тег к тегу класса. Причина в том, что я хочу фильтровать вывод logcat с помощью операторов журнала, которые записывает мое приложение, и не загромождать мой файл журнала журналами из системы или других приложений.

Поэтому я пришел к получению журналов следующим образом:

String command = "logcat -d -v time com.myapp.*:I *:S"
Process process = Runtime.getRuntime().exec(command);
BufferedReader bufferedReader = new BufferedReader(
                new InputStreamReader(process.getInputStream()));

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

Однако в итоге я получил пустой файл журнала. Что заставляет меня думать, что регулярное выражение "com.myapp. :I" не работает. Я также пытался опустить звездочку (), но это тоже не работает. Однако, если я использую "*:I", это работает.

Что заставляет меня задаться вопросом, возможна ли фильтрация только по полному имени тега? Есть ли способ получить журнал, отфильтрованный по «com.myapp». ?

Я полагаю, что план Bзаключается в том, чтобы в цикле while я мог проверить, содержит ли строка мой тег, и добавить его только в том случае, если это так, но я действительно хотел бы избежать этого...

6
задан AgentKnopf 20 March 2012 в 13:48
поделиться