• adb


    这篇的大部分内容是学习至<极客学院>的相关课程而来,因为学习后的实际使用过程中发现部分知识并没有讲解详细,所以决定结合自身实践,添补并总结一些相关内容.

    好嘞~上菜!

    Android log系统

    logcatAndroid中的一个命令行工具,可以用于得到程序的log信息,获取的主要是java层和c++层。

     

     

    logcat命令格式

    语法格式:

      adb shell logcat [<参数>]...[<优先级过滤>]

    PC端执行:

      >>> adb shell logcat [<参数>]...[<优先级过滤>]

    shell执行:

      >>> adb shell

      >>> logcat [<参数>]...[<优先级过滤>]

    停止输出:

      ctrl+c

    logcat缓冲区介绍

    AndroidLog输出量巨大,特别是通信系统的Log,因此AndroidLog输出到不同的缓冲区中。

    目前定义了4Log缓冲区:

            Radio:输出通信系统的Log

            System:输出系统组件的Log

            Event:输出事件模块的log

            Main:所有java层的log,以及不属于上面3层的log

    缓冲区主要给系统组件使用,一般的应用无需关心,应用LOG都输出到main缓冲区中。

    logcat命令参数

     

    命令

    效果

    -b<缓冲区>

    radio:输出通信系统的Log

    system:输出系统组件的Log

    event:输出event模块的log

    main:所有java层的log,以及不属于上面3层的log

    加载查看指定的日志缓冲区信息,默认mainsystem

    -c

    清除缓冲区中的全部日志并退出

    -d

    将缓冲区的log转存到屏幕中,然后退出

    -f<文件名>

    log输出到指定的文件中。

    -g

    打印日志缓冲区的大小并退出

    -n<数量>

    设置输出日志的文件数的最大数目,默认值是4,需要和-r一起使用。

    -r<字节>

    XX字节输出一个日志,默认值为16,需要个-f一起使用。

    -s <设备号>

    过滤器

    -v<格式>

    设置输出格式的日志消息。默认是短暂的格式。支持的格式列表见格式化输出。

    命令格式:

      >>> adb shell logcat -n 200 -r 50 -f /mnt/sdcard/log/logcat.log

    解读:

      输出.log-f的地址,每个文件50KB,200.

    注意:

      1.-f只能指定手机内的路径

      2.使用>指定PC路径也可以存储,但是这样所有log会写入一个文件中,如果你操作时间较长可以想象一下,打开一个几十Mlog那画面太美了~

    logcat格式化输出

     

    log信息==’元数据字段’:’log内容

    可以修改输出显示一个特定的元数据字段格式的消息,为此使用-v选项来指定一个支持的输出格式,一下为支持的格式。

    drief

    显示优先级/标记和过程的PID发出的消息(默认格式)

    process

    只显示PID

    tag

    只显示优先级/标记

    raw

    显示原始的日志消息,没有其它元数据字段

    time

    调用显示日期、时间、优先级/标签和过程的PID发出消息

    threadtime

    调用显示日期、时间、优先级、标签以及PID TID线程发出的消息

    long

    显示所有元数据字段与空白行和单独的消息

    命令格式:

      >>> adb shell logcat -v tag

    解读:

      用tag模式输出log信息

    还可以指定多种模式组合输出

    命令格式:

      >>> adb shell logcat -v tag -v time

    logcat优先级

    优先级从低到高

    V(String,String)(verbose)

    显示全部信息

    D(String,String)(debug)

    显示调试信息

    I(String,String)(information)

    显示一般信息

    W(String,String)(warning)

    显示警告信息

    E(String,String)(error)

    显示错误信息

    F(String,String)(fatal)

    显示严重错误

    S(String,String)(silent)

    显示,无输出

    为了减少日志的输出,以及有效的过滤多余的信息,可以建立一个过滤器

    过滤语法 : 元数据字段优先级

    例子:

      >>> adb shell logcat ActivityManager:I Myapp:D *:S

    解读:

      显示’ActivityManager’大于I的日志,显示’Myapp’大于D的日志,其余日志不显示

    ActivityManager:

      是与系统中所有运行着的Activity交互提供了接口,主要的接口围绕着运行中的进程信息,任务信息,服务信息等。直接翻译就是”Activity管理器”,建议过滤显示.

    Myapp:

      代指你想过滤的’元数据字段’,这个东西开发人员可以设置

        1.推荐与开发人员沟通,设置为包名,方便过滤

        2.如果开发不给改,可以向开发人员询问’元数据字段’被设置为什么(官方推荐的是相关log类的类名)

        3.如果开发还是不给帮助,可以使用过滤字符串:adb shell logcat | find “包名” ,来过滤与你包名有关的log

    *:

      指其它所有的log信息

    菜齐了!!!

  • 相关阅读:
    Salesforce LWC学习(三十七) Promise解决progressindicator的小问题
    Salesforce Consumer Goods Cloud 浅谈篇三之 行动计划(Action Plan)相关配置
    python 3.7环境安装并使用csv
    分享数据库优化文章
    php 5.4 var_export的改进
    CentOS7 启动 firewalld 防火墙失败,查看日志提示超时
    使用 SSL 加密的 JDBC 连接 SAP HANA 数据库
    CAS学习笔记一:CAS 授权服务器简易搭建
    202110期自考总结
    自定义 OpenShift s2i 镜像与模板——OracleJDK8
  • 原文地址:https://www.cnblogs.com/dianxiao2/p/5610887.html
Copyright © 2020-2023  润新知