Android的Logcat命令詳解:翻譯Enabling logcat Logging

來源:互聯網
上載者:User
 

Android的Logcat命令詳解

——翻譯Enabling logcat Logging

田海立@CSDN

2011/07/28

Android LOG系統提供了收集和查看系統調試輸出的功能。各種應用程式和系統其他部分輸出的LOG都儲存在一些迴圈緩衝區裡,這些緩衝區可以通過 logcat 命令來查看和過濾使用。

使用logcat命令

你可以用 logcat 命令來查看和控制系統LOG Buffer裡內容,通常用法:

[adb] logcat [<option>] ... [<filter-spec>] ...

這節下面內容解釋過濾以及命令的選項。關於選項的全面總結可參看:logcat命令選項列表

你可以在你的電腦,也可以通過運行在模擬器/裝置上的遠程adb shell端來使用logcat命令。在你的電腦上查看LOG輸出:

$ adb logcat

通過遠端 adb shell,可以這樣:

# logcat

過濾Log輸出

Android LOG資訊都有一個標籤(tag)和它的優先順序(priority)。

·         LOG的標籤是一個簡短的描述來指示發生在哪一個系統組件內,在寫LOG時指定。(比如:“View”就是查看VIEW系統的標籤).

·         優先順序有下列幾種,按照優先順序從低到高順序排列為:

o    V — Verbose (最低優先順序)

o    D — Debug

o    I — Info

o    W — Warning

o    E — Error

o    F — Fatal

o    S — Silent (最高優先順序,沒有任何輸出)

在運行logcat 的時候在前兩列的資訊中你就可以看到 logcat 的標籤列表和優先順序別,它是這樣標出的<priority>/<tag>.

下面是一個logcat輸出的例子,它的優先順序就是“I”,標籤是“ActivityManage”:

I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}

為了讓LOG輸出達到可管理的層級,你還可以用過濾器來限制LOG輸出,過濾器可以協助只是顯示你感興趣的tag-priority組合的資訊,而隱藏其他資訊。

A過濾器語句按照tag:priority ...格式描述。這裡,tag 表示是感興趣的標籤,priority 是表示報告指定標籤的最低等級。 包含上面tag的資訊或者指定優先順序之上的資訊被寫入LOG。你可以在一個過濾運算式中提供多個tag:priority 聲明,這些聲明之間用空白符間隔。

下面有一個過濾運算式的例子,例子表示不顯示其他所有的LOG資訊,除了那些標籤為“ActivityManager”且優先順序為“Info”以上的和標籤為“ MyApp”且優先順序為“ Debug”以上的資訊。

adb logcat ActivityManager:I MyApp:D *:S

上面運算式的最後的元素 *:S,,是設定所有標籤的優先順序為“silent”,這樣保證只有“View”和“MyApp”的LOG才會顯示。用 *:S 的是確保日誌輸出被限制在你明確指定的過濾運算式的極好方法——它使的你的過濾器在LOG輸出時就像一個“白名單”。

下面過濾語句顯示優先順序為warning或更高的LOG日誌資訊:

adb logcat *:W

如果你在電腦上運行logcat (相比遠程運行adb shell),你還可以通過為環境變數ANDROID_LOG_TAGS指定一個參數來設定預設的過濾器:

export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"

需要注意,如果你從遠端運行logcat 或者使用adb shell logcat,ANDROID_LOG_TAGS 過濾器並不能應用在模擬器/裝置執行個體上 。

控制LOG輸出格式

Log日誌資訊除了包括標籤和優先順序外,還有許多其他中繼資料域。可以修改日誌的輸出格式,來顯示出特定的中繼資料域。可以通過-v 選項來指定下列所支援的格式化輸出。

·         brief — 顯示priority/tag和列印LOG進程的PID((預設格式)。

·         process — 僅僅顯示PID。.

·         tag — 僅僅顯示priority/tag。

·         thread — 顯示進程:線程和priority/tag.

·         raw — 顯示原始LOG資訊,不顯示其他中繼資料域。

·         time — 顯示日期,發生時間,priority/tag和列印LOG進程的PID。

·         long — 顯示所有的中繼資料域和LOG資訊,他們之間用空白行隔開。

當啟動了logcat,你可以通過-v選項來指定輸出格式:

[adb] logcat [-v <format>]

下面是用 thread 輸出格式來產生的LOG的例子:

adb logcat -v thread

要注意的是你只能用-v 選項來指定一個輸出格式。

查看指定的LOG Buffer

Android日誌系統有多個迴圈緩衝區,並不是所有的LOG資訊都把LOG輸出到預設迴圈緩衝區。為了看到其他緩衝區的LOG資訊,你需要通過-b 選項來啟動logcat 。來看其他迴圈緩衝區。這些緩衝區有:

·         radio — 查看與無線/電話相關的緩衝區裡的資訊。

·         events — 查看和事件相關的的緩衝區。

·         main — 查看main緩衝區裡的LOG (預設)

-b  選項使用方法:

[adb] logcat [-b <buffer>]

下面的例子示範怎麼查看包含radio 和 telephony資訊的LOG緩衝區:

adb logcat -b radio

查看stdout和stderr

在預設狀態下,Android系統輸出stdout 和 stderr  (System.out 和System.err)到/dev/null。在運行Dalvik VM的進程中,有一個系統可以備份日誌輸出。在這種情況下,系統會用stdout 和stderr和優先順序 I.來記錄日誌資訊。

通過這種方法來指定輸出的路徑,你可以停止啟動並執行模擬器/裝置,然後通過用命令setprop 使輸出重新導向。

$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start

系統在你關閉模擬器/裝置前設定會一直保留這些設定。為了使這個設定作為你的模擬器/裝置的預設設定,可以通過添加到裝置的檔案/data/local.prop 中。

Logcat命令選項列表

選項

描述

-b <buffer>

載入一個指定的LOG Buffer供查看,比如event 或radio。 預設值是main 。具體參考查看指定的Log Buffers.

-c

清除整個 log並退出。

-d

輸出LOG到螢幕上並退出。

-f <filename>

寫LOG資訊到 <filename>。預設是stdout.

-g

列印指定LOG Buffer的大小並退出。

-n <count>

設定日誌的最大數目<count>,預設值是4,需要和選項-r一起使用。

-r <kbytes>

Rotates每輸出<kbytes> 寫LOG檔案,預設值為16,需要和選項-f一起使用。

-s

設定預設的過濾層級為silent。

-v <format>

Sets 設定LOG的輸出格式,預設的是brief 格式,要知道更多的支援的格式,參看控制LOG輸出格式.

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

附,大家看兩張在WORD裡編輯的效果:

一、開頭

二、結尾

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.