Android日志系統(tǒng)提供了記錄和查看系統(tǒng)調(diào)試信息的功能。日志都是從各種軟件和一些系統(tǒng)的緩沖區(qū)中記錄下來的,緩沖區(qū)可以通過 命令來查看和使用.
你可以用 命令來查看系統(tǒng)日志緩沖區(qū)的內(nèi)容:
[adb]
[<option>] ... [<filter-spec>] ...請(qǐng)查看Listing of ,它對(duì) Command Options 命令有詳細(xì)的描述 .
你也可以在你的電腦或運(yùn)行在模擬器/設(shè)備上的遠(yuǎn)程adb shell端來使用命令,也可以在你的電腦上查看日志輸出。
$ adb
你也這樣使用:
#
每一個(gè)輸出的Android日志信息都有一個(gè)標(biāo)簽和它的優(yōu)先級(jí).
V
— Verbose (lowest priority)D
— DebugI
— InfoW
— WarningE
— ErrorF
— FatalS
— Silent (highest priority, on which nothing is ever printed)在運(yùn)行 的標(biāo)簽列表和優(yōu)先級(jí)別,它是這樣標(biāo)出的:
<priority>/<tag>
.
下面是一個(gè)
輸出的例子,它的優(yōu)先級(jí)就似乎I,標(biāo)簽就是ActivityManage:I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}
為了讓日志輸出能體現(xiàn)管理的級(jí)別,你還可以用過濾器來控制日志輸出,過濾器可以幫助你描述系統(tǒng)的標(biāo)簽等級(jí).
過濾器語句按照下面的格式描tag:priority ...
, tag
表示是標(biāo)簽,priority
是表示標(biāo)簽的報(bào)告的最低等級(jí). 從上面的tag的中可以得到日志的優(yōu)先級(jí). 你可以在過濾器中多次寫tag:priority
.
這些說明都只到空白結(jié)束。下面有一個(gè)列子,例子表示支持所有的日志信息,除了那些標(biāo)簽為”ActivityManager”和優(yōu)先級(jí)為”Info”以上的和標(biāo)簽為” MyApp”和優(yōu)先級(jí)為” Debug”以上的。 小等級(jí),優(yōu)先權(quán)報(bào)告為tag.
adb
ActivityManager:I MyApp:D *:S上面表達(dá)式的最后的元素 *:S
,,是設(shè)置所有的標(biāo)簽為”silent”,所有日志只顯示有”View” and “MyApp”的,用 *:S
的另一個(gè)用處是 能夠確保日志輸出的時(shí)候是按照過濾器的說明限制的,也讓過濾器也作為一項(xiàng)輸出到日志中.
下面的過濾語句指顯示優(yōu)先級(jí)為warning或更高的日志信息:
adb
*:W如果你電腦上運(yùn)行 ,相比在遠(yuǎn)程adbshell端,你還可以為環(huán)境變量
ANDROID_LOG_TAGS
:輸入一個(gè)參數(shù)來設(shè)置默認(rèn)的過濾
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
需要注意的是ANDROID_LOG_TAGS
過濾器如果通過遠(yuǎn)程shell運(yùn)行 或用
adb shell
來運(yùn)行模擬器/設(shè)備不能輸出日志.
日志信息包括了許多元數(shù)據(jù)域包括標(biāo)簽和優(yōu)先級(jí)??梢孕薷娜罩镜妮敵龈袷剑钥梢燥@示出特定的元數(shù)據(jù)域。可以通過 -v
選項(xiàng)得到格式化輸出日志的相關(guān)信息.
brief
— Display priority/tag and PID of originating process (the default format).process
— Display PID only.tag
— Display the priority/tag only.thread
— Display process:thread and priority/tag only.raw
— Display the raw log message, with no other metadata fields.time
— Display the date, invocation time, priority/tag, and PID of the originating process.long
— Display all metadata fields and separate messages with a blank lines.當(dāng)啟動(dòng)了 ,你可以通過
-v
選項(xiàng)來指定輸出格式:
[adb]
[-v <format>]下面是用 thread
來產(chǎn)生的日志格式:
adb
-v thread需要注意的是你只能-v
選項(xiàng)來規(guī)定輸出格式 option.
Android日志系統(tǒng)有循環(huán)緩沖區(qū),并不是所有的日志系統(tǒng)都有默認(rèn)循環(huán)緩沖區(qū)。為了得到日志信息,你需要通過-b
選項(xiàng)來啟動(dòng) 。如果要使用循環(huán)緩沖區(qū),你需要查看剩余的循環(huán)緩沖期:
radio
— 查看緩沖區(qū)的相關(guān)的信息.events
— 查看和事件相關(guān)的的緩沖區(qū).main
— 查看主要的日志緩沖區(qū)-b
選項(xiàng)使用方法:
[adb]
[-b <buffer>]下面的例子表示怎么查看日志緩沖區(qū)包含radio 和 telephony信息:
adb
-b radio在默認(rèn)狀態(tài)下,Android系統(tǒng)有stdout
和 stderr
(System.out
和System.err
)輸出到/dev/null
,在運(yùn)行Dalvik VM的進(jìn)程中,有一個(gè)系統(tǒng)可以備份日志文件。在這種情況下,系統(tǒng)會(huì)用stdout
和stderr
和優(yōu)先級(jí) I.來記錄日志信息
通過這種方法指定輸出的路徑,停止運(yùn)行的模擬器/設(shè)備,然后通過用setprop
命令遠(yuǎn)程輸入日志
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
系統(tǒng)直到你關(guān)閉模擬器/設(shè)備前設(shè)置會(huì)一直保留,可以通過添加/data/local.prop
可以使用模擬器/設(shè)備上的默認(rèn)設(shè)置
Option | Description |
---|---|
-b <buffer> | 加載一個(gè)可使用的日志緩沖區(qū)供查看,比如event 和radio . 默認(rèn)值是main 。具體查看Viewing Alternative Log Buffers. |
-c | 清楚屏幕上的日志. |
-d | 輸出日志到屏幕上. |
-f <filename> | 指定輸出日志信息的<filename> ,默認(rèn)是stdout . |
-g | 輸出指定的日志緩沖區(qū),輸出后退出. |
-n <count> | 設(shè)置日志的最大數(shù)目<count> .,默認(rèn)值是4,需要和 -r 選項(xiàng)一起使用。 |
-r <kbytes> | 每<kbytes> 時(shí)輸出日志,默認(rèn)值為16,需要和-f 選項(xiàng)一起使用. |
-s | 設(shè)置默認(rèn)的過濾級(jí)別為silent. |
-v <format> | 設(shè)置日志輸入格式,默認(rèn)的是brief 格式,要知道更多的支持的格式,參看Controlling Log Output Format . |
聯(lián)系客服