在 Android 应用程序中,我试图获取我的应用程序日志消息并将它们保存到文件中
我正在使用下面的代码。
我为每个班级使用不同的标签,并且有多个标签。
执行 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
and com.android.ddmuilib.logcat.LogCatPidToNameMapper
.
因此,我能想到的一种解决方法是调用 shell (adb shell
),使用计算出你的PIDps
,然后将 adb logcat 的输出通过管道传输到 grep:
adb logcat -v long | grep <your PID>
这会有点痛苦,因为每次运行应用程序时你的 PID 都会改变,但这就是你在紧要关头可以做到的方法。
编辑:我刚刚注意到长格式实际上在一行上打印 PID,在下一行上打印消息,因此您可能需要使用 awk 之类的东西而不是 grep。我将测试一些内容并发布后续内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)