Android中通过PID或应用程序包过滤日志消息

Android中通过PID或应用程序包过滤日志消息,android,android-logcat,Android,Android Logcat,我知道要过滤Android日志消息,我们可以使用 adb logcat ActivityManager:I MyApp:D *:S 但是,在我的应用程序中,我对不同的活动使用了不同的标记,我只想过滤这个应用程序的所有日志。最好的方法是什么 是否需要在命令中指定所有标记 或者在整个应用程序中使用通用标记,这是唯一的选择 在Eclipse中查看日志消息时,我注意到有一个名为PID的列和另一个名为Application(包含应用程序包的名称)的列,对于给定的应用程序,这两个列(显然)对于不同的Tag

我知道要过滤Android日志消息,我们可以使用

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命令现在似乎没有太大的功能:(