1.Log簡(jiǎn)介與用途
Log是Android提供的用來(lái)輸出日志的工具類(lèi)篮灼。當(dāng)使用Log.V()、Log.D()徘禁、Log.e()來(lái)打印的日志的時(shí)候诅诱,可以通過(guò)logcat來(lái)查看輸出的日志。
另外有種情況是我們經(jīng)常能夠遇到的送朱,當(dāng)應(yīng)用發(fā)生異常的時(shí)候娘荡,logcat監(jiān)視器就會(huì)顯示相關(guān)的堆棧信息,讓我們得以知道是哪里發(fā)生了錯(cuò)誤驶沼。
同時(shí)我們也可以利用AndroidStudio 連接上設(shè)備炮沐,在logcat中查看應(yīng)用或者系統(tǒng)輸出的日志
2.logcat 消息格式
每個(gè)Android的日志消息都有與其關(guān)聯(lián)的標(biāo)志和不同的優(yōu)先級(jí),用來(lái)表示不同的信息回怜。調(diào)用格式如下:
Log.d(tag, message);
log的不同方法代表著不同的優(yōu)先級(jí)大年,方法參數(shù)tag用來(lái)識(shí)別日志輸出的地方,message用來(lái)表示輸出信息
優(yōu)先級(jí)含義:
- V — 詳細(xì)玉雾,顯示所有日志消息(最低優(yōu)先級(jí))
- D — 調(diào)試翔试,顯示僅在開(kāi)發(fā)期間有用的調(diào)試日志消息
- I — 信息,顯示常規(guī)使用的預(yù)計(jì)日志消息
- W — 警告复旬,顯示尚不是錯(cuò)誤的潛在問(wèn)題
- E — 錯(cuò)誤垦缅,顯示已經(jīng)引發(fā)錯(cuò)誤的問(wèn)題
- A — 斷言,顯示開(kāi)發(fā)者預(yù)計(jì)絕不會(huì)發(fā)生的問(wèn)題
日志消息的格式:
date time PID-TID/package priority/tag: message
例如:
12-10 13:02:50.071 1901-4229/com.google.android.gms V/AuthZen: Handling delegate intent.
3. Log的Verbose驹碍、Debug壁涎、Error等方法在Debud和Relase版本中都會(huì)打印嗎
developer Android官網(wǎng)解釋對(duì)log有如下說(shuō)明:
Verbose should never be compiled into an application except during development. Debug logs are compiled in but stripped at runtime. Error, warning and info logs are always kept.
大體意思為:
- Verbose方法:除開(kāi)發(fā)期間外凡恍,其他任何時(shí)候都絕不應(yīng)該將Log.v()方法編譯到您的應(yīng)用中。
- Debug方法:調(diào)試日志雖然會(huì)編譯粹庞,但會(huì)在運(yùn)行時(shí)去掉咳焚。
- 對(duì)于error,warning和info方法則會(huì)始終保留。
但是經(jīng)過(guò)測(cè)試庞溜,真實(shí)情況并不是這樣的革半,在構(gòu)建的Relase版本中,debug方法并沒(méi)有在運(yùn)行時(shí)被"跳過(guò)"(stripped),它仍然會(huì)被打印出來(lái)
結(jié)論如下:
Log的verbose流码、debug又官、info、warnning等方法不管是在debug還是relase版本中都會(huì)被打印輸出漫试。
every time you log in production, a puppy dies六敬。 - by JakeWharton
故我們不要把log打印在relase中。
4.Log中的isLoggable()方法
該API用來(lái)檢查是否對(duì)于特定的tag和level下驾荣,log日志是否會(huì)輸出外构。
可以通過(guò)adb命令通過(guò)setprop 對(duì)特定的標(biāo)簽設(shè)置優(yōu)先級(jí),只有大于等于設(shè)置的優(yōu)先級(jí)的tag標(biāo)簽才會(huì)被輸出打印播掷。
adb shell setprop log.tag.YOUR_LOG_TAG LEVEL
備注:該設(shè)置在手機(jī)重啟后將無(wú)效审编,可以通過(guò)修改data/local.prop 該文件,達(dá)到永久設(shè)置
5.好用的Timber
Timber輕量歧匈,可以只在開(kāi)發(fā)階段打印日志, 支持格式化輸出msg
1.在Application中onCreate中添加:
if (BuildConfig.DEBUG) {
Timber.plant(new Timber.DebugTree());
}
2.接著在任何地方進(jìn)行打印log
Timber.d("Downloading URL: %s", url);
鏈接地址:Timber