Android adb logcat 的使用

来源:互联网 发布:bim与gis数据集成 编辑:程序博客网 时间:2024/05/17 03:23

过滤日志输出

        每一条日志消息都有一个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 不会导出到模拟器或手机设备上。

原创粉丝点击