您的位置:首页 > 移动开发 > Android开发

Android adb logcat 的使用

2012-08-18 13:35 411 查看
过滤日志输出

每一条日志消息都有一个Priority/Tag

优先级是下面的字符,顺序是从低到高:

V — 明细 (最低优先级)

D — 调试

I — 信息

W — 警告

E — 错误

F — 严重错误

S — 无记载 (最高优先级,没有什么会被记载)

   通过运行logcat ,可以获得一个系统中使用的标记和优先级的列表,观察列表的前两列,给出的格式是<priority>/<tag>。

    过滤器可以限制系统只输出感兴趣的标记-优先级组合。

    过滤器表达式的格式是tag:priority ... ,其中tag是标记, priority是最小的优先级, 该标记标识的所有大于等于指定优先级的消息被写入日志。也可以在一个过滤器表达式中提供多个这样的过滤,它们之间用空格隔开。

    下面给出的例子是仅输出标记为“RIL”并且优先级大于等于“Info”和标记为“GSM”并且优先级大于等于“Debug”的日志:

adb logcat RIL:I GSM:D *:S

    上述表达式最后的
*:S
用于设置所有标记的日志优先级为S,这样可以确保仅有标记为“RIL”和“GSM”的日志被输出,使用
*:S
是可以确保输出符合指定的过滤器设置的一种推荐的方式,这样过滤器就成为了日志输出的“白名单”。

只显示需要的输出,白名单

最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配(简单的匹配一行当中的某个字符串).例如
MyApp:

adb logcat | grep MyApp

adb logcat | grep -i myapp #忽略大小写

    如果在开发用电脑上运行
logcat
(相对于运行运程shell而言),也可以通过
ANDROID_LOG_TAGS
环境变量设置默认的过滤器表达式:

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

    需要注意的是,如果是在远程shell或是使用
adb
shell logcat
命令运行
logcat
ANDROID_LOG_TAGS
不会导出到模拟器或手机设备上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: