LogCat是Android中一個命令行工具,可以用於得到程序的log信息,結合tee和grep命令可以方便的獲取、查看日志。
1、Logcat使用
命令:LogCat [options] [filterspecs]
LogCat的選項包括:
-s 設置過濾器,如指定 '*:s'.
-f <filename> 輸出到文件,默認情況是標准輸出。
-r [<kbytes>] Rotate log every kbytes. (16 if unspecified). Requires –f。
-n <count> Sets max number of rotated logs to <count>, default 4。
-v <format> 設置log的打印格式, <format> 是下面的一種: brief process tag thread raw time threadtime long。
-c 清除所有log並退出。
-d 得到所有log並退出 (不阻塞)。
-g 得到環形緩沖區的大小並退出。
-b <buffer> 請求不同的環形緩沖區('main' (默認), 'radio', 'events')。
-B 輸出log到二進制中。
過濾器的格式是一個這樣的串: <tag>[:priority]
其中 <tag> 表示log的component, tag (或者使用 * 表示所有) , priority 如下所示:
V Verbose
D Debug
I Info
W Warn
E Error
F Fatal
S Silent
事實上LogCat的功能是由Android的類android.util.Log決定的,在程序中log的使用方法如下所示:
Log.v() -------------------- VERBOSE
Log.d() -------------------- DEBUG
Log.i() -------------------- INFO
Log.w() -------------------- WARN
Log.e() -------------------- ERROR
以上log的級別依次升高,Debug信息應當只存在於開發中,INFO、 WARN、ERROR這3種log將出現在發布版本中。
2、tee使用
功能說明:讀取標准輸入的數據,並將其內容輸出成文件。
語 法:tee [-ai][--help][--version][文件...]
補充說明:tee指令會從標准輸入設備讀取數據,將其內容輸出到標准輸出設備,同時保存成文件。
參 數:
-a或--append 附加到既有文件的後面,而非覆蓋它.
-i-i或--ignore-interrupts 忽略中斷信號。
--help 在線幫助。
--version 顯示版本信息。
3、grep使用
grep (global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達式中的元字符表示回其自身的字面意義,不再特殊。linux使用GNU版本的grep。它功能更強,可以通過-G、-E、-F命令行選項來使用egrep和fgrep的功能。
grep的工作方式是這樣的,它在一個或多個文件中搜索字符串模板。如果模板包括空格,則必須被引用,模板後的所有字符串被看作文件名。搜索的結果被送到屏幕,不影響原文件內容。
grep可用於shell腳本,因為grep通過返回一個狀態值來說明搜索的狀態,如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。我們利用這些返回值就可進行一些自動化的文本處理工作。
具體命令和語法請參考其他書籍。
4、Logcat、tee和grep結合使用
三者結合到一起可以實現:log日志同時輸出到終端和本地文件,對於輸出到終端的log按照grep的要求進行過濾顯示。
比如:sudo ./adb logcat -v time | tee /home/Linux/main.txt |grep 'accept'——輸入android應用層日志到屏幕和main.txt文件,同時過濾屏幕的日志顯示包含字符串“accept”的行,以關注自己需要的信息。