Android中通过PID或应用程序包过滤日志消息
我知道要过滤Android日志消息,我们可以使用Android中通过PID或应用程序包过滤日志消息,android,android-logcat,Android,Android Logcat,我知道要过滤Android日志消息,我们可以使用 adb logcat ActivityManager:I MyApp:D *:S 但是,在我的应用程序中,我对不同的活动使用了不同的标记,我只想过滤这个应用程序的所有日志。最好的方法是什么 是否需要在命令中指定所有标记 或者在整个应用程序中使用通用标记,这是唯一的选择 在Eclipse中查看日志消息时,我注意到有一个名为PID的列和另一个名为Application(包含应用程序包的名称)的列,对于给定的应用程序,这两个列(显然)对于不同的Tag
adb logcat ActivityManager:I MyApp:D *:S
但是,在我的应用程序中,我对不同的活动使用了不同的标记
,我只想过滤这个应用程序的所有日志。最好的方法是什么
是否需要在命令中指定所有标记
或者在整个应用程序中使用通用标记,这是唯一的选择
在Eclipse中查看日志消息时,我注意到有一个名为
PID
的列和另一个名为Application
(包含应用程序包的名称)的列,对于给定的应用程序,这两个列(显然)对于不同的Tag
是相同的。这意味着不仅可以通过标签,还可以通过pid/包进行过滤。我使用一种常见的标签格式,如下所示
例如,对于活动
,我定义了一个基本活动
类
public class MyCompanyActivity extends Activity {
protected final String TAG = this.getClass().getName();
...
}
所有活动
我创建扩展该活动
,例如
public class FishActivity extends MyCompanyActivity {
...
}
结果是,FishActivity
将有一个标记,它是
com.mycompany.myapp.FishActivity
然后我需要做的就是过滤com.mycompany.myapp
Atul上的日志猫,使用ActivityManager获取应用程序PID,然后在PIDahh的基础上填充,我在看到您的评论之前更新了我的问题。是否可以通过pid进行过滤,这就是我想做的。@imrankhan我们如何通过pid进行过滤?你能在管道中使用grep吗?@blackbelt:可以,但在命令行上,我只是测试输出的外观,但实际上我必须将logcat命令的参数传递到库中,这样grep在管道中就不会工作了。谢谢,这种方法看起来是一种干净的方法,我们甚至不需要在每个活动中声明标记变量,但只是想知道使用这种方法是否有任何副作用?既然你说“我使用…”,那么我想这应该不会有任何问题,对吧?@AtulGoyal:我想不出有任何副作用,从我开始Android开发以来就一直在使用这种方法。我已经为应用程序
、活动
、服务
等创建了基类。因此,我不需要手动定义标记
,它始终可用,并用唯一的包.appname
前缀反映类名。我甚至让用户通过使用Catlog之类的工具来帮助我调试我的应用程序,并对公司名称进行过滤,然后通过电子邮件将结果发送给我。它确保我只获取与我的应用程序相关的信息,而不获取其他可能侵犯用户隐私的信息。例如,还有一件事,如何在com.mycompany.myapp
上过滤logcat当我键入adb logcat com.mycompany.myapp:I*:S
时,logcat命令对我不起作用,但对adb logcat com.mycompany.myapp.FishActivity:I*:S
起作用。我不使用adb命令行,我在Eclipse中使用DDMS透视图(通过窗口->打开透视->其他可用)。我在com.mycompany.myapp.*
上指定了一个要匹配的筛选器,它工作正常。因此,在Eclipse之外无法让它工作?实际上,我正在使用此库收集应用程序崩溃时的崩溃数据,因此必须在那里传递logcat命令的参数。adb logcat命令现在似乎没有太大的功能:(