2013-02-07 37 views
2

我有一臺連接到電腦的Android設備,並打開了多個顯示logcat信息的shell。每個人都使用特定的過濾器運行 所以我現在的問題是,這些過濾器在哪裏應用?已經在手機上,所以只有過濾的消息通過USB發送。或者它們是否應用於adb服務器或客戶端上的pc上?我只是想防止有多個未經過濾的logcat流在USB上同時運行,因爲我限制了bandwitdh。 謝謝哪裏應用了logcat過濾器?

回答

1

通過設備上的logcat命令將數據從內核緩衝區中取出。如果您運行

% adb logcat -\?

可以看到使用信息,其中包括「filterspecs」的說明。這些可以在命令行上設置,也可以通過設置ANDROID_LOG_TAGS來設置。例如:

% adb logcat '*:W'

會告訴你只在警告或錯誤級別的消息。

這裏的訣竅是,adb logcat只是adb shell logcat的簡寫,還會將ANDROID_LOG_TAGS環境變量傳播到設備。該過濾由logcat命令完成,該命令僅通過adb轉儲文本輸出。 logcat命令的輸出沒有得到任何特殊處理。

所以你的問題的答案是:過濾發生在設備上,單獨爲每個窗口。

DDMS的工作方式不同。

1

或者他們是應用在pc上的adb服務器或客戶端?

它們應用於呈現LogCat信息的任何應用程序。

1

目前對於在不同設備上運行的相同版本是不可能的。如果您有不同的版本,則可以根據設備名稱或版本應用過濾器。

正如你想做到這一點,那麼它可能會實現一些技巧。 Log.v(LOG_TAG,"message"); 在您的LOG_TAG附加設備ID,可以通過TelephonyManager識別。

並添加使用它的過濾器。

+1

是的,我認爲它不存在.. –

1

Android將設備上的日誌信息存儲到4個不同的緩衝區(事件日誌,系統日誌,無線電日誌,主日誌)中。之後,adbd守護進程可以訪問這些信息並將其發送給客戶端。因此,只有在客戶端,您纔有能力過濾信息,因爲在手機上存儲了所有信息。

0

過濾器應用在手機上。所以你輸入一個不存在的logcat標籤的過濾器,然後沒有流量超過了USB。 但是每個使用cmd shell打開的logcat會創建一個新的流,從而增加總流量。