应用了logcat过滤器的位置?

时间:2013-02-07 13:47:23

标签: android filter filtering adb logcat

我有一个连接到电脑的Android设备,并打开了多个显示logcat信息的shell。每个人都使用其特定的过滤器运行。 所以现在我的问题是,这些过滤器应用于何处?已经在手机上,所以只有通过usb发送过滤后的消息。或者它们是在adb服务器或客户端的PC上应用的吗?我只是想防止在usb上同时运行多个未经过滤的logcat流,因为我的bandwitdh有限。 感谢

5 个答案:

答案 0 :(得分:1)

  

或者它们是在adb服务器或客户端的电脑上应用的吗?

它们适用于呈现LogCat信息的任何应用程序。

答案 1 :(得分:1)

目前不可能在不同的设备上运行相同的构建。如果你有不同的构建,那么你可以根据设备名称或版本应用过滤器。

由于你想要做到这一点,它可能通过一些技巧实现。  Log.v(LOG_TAG,"message"); 在LOG_TAG附加设备ID中,可以通过TelephonyManager识别。

使用它添加过滤器。

答案 2 :(得分:1)

Android将设备上的日志信息存储到4个不同的缓冲区(事件日志,系统日志,无线电日志,主日志)。之后adbd守护程序可以访问此信息并将其发送给客户端。因此,只有在客户端,您才能过滤信息,因为在手机上存储了所有信息。

答案 3 :(得分:1)

使用设备上的logcat命令从内核缓冲区中提取数据。如果你运行

% adb logcat -\?

您可以看到使用信息,其中包含“filterspecs”的说明。这些可以在命令行上设置,也可以通过设置ANDROID_LOG_TAGS来设置。例如:

% adb logcat '*:W'

将仅显示警告或错误级别的消息。

这里的诀窍是adb logcat只是adb shell logcat的简写,还有将ANDROID_LOG_TAGS环境变量传播到设备的额外好处。过滤由logcat命令完成,该命令只是通过adb转储文本输出。 logcat命令的输出没有得到任何特殊处理。

所以你的问题的答案是:在设备上进行过滤,对每个窗口单独进行。

DDMS的工作方式不同。

答案 4 :(得分:0)

过滤器应用于手机。因此,您为不存在的logcat标记输入过滤器,然后没有流量通过usb。 但是,使用cmd shell打开的每个logcat都会创建一个新流,从而增加总流量。