android - 以编程方式为我的应用程序过滤 logcat。不适合我

标签 android logcat

在一个安卓应用程序中,我试图获取我的应用程序日志消息并将它们保存到文件中 我正在使用下面的代码。 我为我的每个类(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.LogCatMessageParsercom.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/

相关文章:

java - Eclipse Android - 应用程序启动时崩溃

android - 如何解释 Logcat

android - 为什么我的移动运营商会在我下载文件时对其进行重新编码?

android - OSMdroid 无法在 android studio 中获取当前位置

java - 下面的代码是什么意思?

java - android上非 Activity InputConnection警告上的getExtractedText

java - 如何在获取最后位置时解决 mLastLocation、mLatitudeText、mLongitudeText

android - 直接使用 libmedia\AudioFlinger 录制\播放音频

android -/dev/log/main 未找到

java - 在 Android 中获取和显示日期信息