在一个安卓应用程序中,我试图获取我的应用程序日志消息并将它们保存到文件中 我正在使用下面的代码。 我为我的每个类(class)使用不同的标签,其中有几个。 做 logcat -d 给我所有不相关的消息.. 把我的包名放在
logcat -d myapp.com:I *:S
不起作用,结果为空,但如果我这样做了
logcat -d MYCLASS1TAG:I MYCLASS2TAG *:S
然后就可以了,但是我有很多课..
我怎样才能只输入我的包名称并获得结果..??
try {
Process process = Runtime.getRuntime().exec("logcat -d");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null)
{
// write to my file here
}
} catch (IOException e) { }
最佳答案
我不确定如何从命令行执行此操作,但 Eclipse 的 ADT 插件可让您按应用程序进行过滤。
编辑:我很好奇,所以我查看了 ADT 源代码以弄清楚 ADT 是如何做到的。简而言之,它使用 -v long
选项将 PID 包含在每条消息中,并保留从 PID 到应用程序名称的映射。相关源码文件在com.android.ddmuilib.logcat.LogCatMessageParser
和com.android.ddmuilib.logcat.LogCatPidToNameMapper
包中。
因此,我能想到的一种解决方法是调用一个 shell (adb shell
),使用 ps
找出您的 PID,然后通过管道传输 adb 的输出logcat 到 grep:
adb logcat -v long | grep <your PID>
这会有点麻烦,因为您的 PID 会在您每次运行该应用程序时发生变化,但这是您在紧要关头可以做到的。
编辑:我刚刚注意到长格式实际上在一行上打印 PID,在下一行打印消息,因此您可能需要使用类似 awk 的东西而不是 grep。我会测试一些东西并发布跟进。
关于android - 以编程方式为我的应用程序过滤 logcat。不适合我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9729085/