当记录我的标签时,总是长这样:
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);
}
}
我的做法是在类的标签之前加上静态标签。原因是我想通过应用程序编写的Log语句来筛选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."的日志呢?
我猜备选方案是,在while循环中检查行是否包含我的标签,并仅在这种情况下追加它,但我真的很想避免这种情况...