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”的行,以关注自己需要的信息。
Android Log日志信息获取
内容版权声明:除非注明,否则皆为本站原创文章。