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