При регистрации мои теги всегда выглядят так:
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 по операторам Log, которые пишет мое приложение, и чтобы не загромождать мой лог-файл журналами из системы или других приложений.
Поэтому я пришел к получению таких журналов, как это:
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 я могу проверить, содержит ли строка мой тег, и добавить его только в этом случае, но я бы действительно хотел избежатьчто ... * * 1023