logcat

  1. 功能

    • 说明

      • 查看app通过Log类输出的日志.
    • 日志类型

      • 系统信息,异常时堆栈信息,开发者输出信息.
    • 内容

      • 介绍logcat指令.
      • UI操作可用Android Studio查看.
  2. 日志系统

    • 说明

      • 安卓的日志系统是由系统进程logd进行管理.
      • logd将部分日志通过循环链表缓存.
    • 缓存

      • 日志缓冲集合: main,crash,system等进行分类,缓冲区大小固定,系统确定缓冲区大小.
      • 日志分等级:方便根据等级对日志过滤.VERBOSE<DEBUG<INFO<WARNING<ERROR<FATAL.
    • 日志

      • 输出一般会格式化,格式化会标注出原始信息,以区分由日志工具添加的信息.
    • 日志系统的编程接口

      • c

        • 通过liblog,头文件定义在android/log.h.
        • 常用上层接口是__android_log_write.函数实现是__android_log_logd_logger,一般是socket.
        • api 30过后可以用__android_set_log_writer切换输出目标.
      • Java

        • Log类.
      • 参数格式

        • Log.X(tag,msg).
        • tag一般是activity或者app之类用于标记某个应用或activity的,msg是真实信息.
      • 完整参数

        • __android_log_buf_write(int bufID, int prio, const char *tag, const char *text)
      • 参考链接

      • 输出

        • logcat对日志进行二次格式化.美化后方便阅读.
    • 日志过滤四类

      • 编译时过滤

        • 将某些调用移除或替换成无效.
        • 移除或无效都不会送到logd.
      • 系统配置

        • 根据系统配置等级,进行统一或针对性过滤.
        • 优先级小的就不能送到logd.
      • 编程过滤

        • __android_log_set_minimum_priority
        • 低于等级的日志不发送到logd.
      • adb logcat

        • 过滤现有的日志,选择性输出.
  3. 指令

    • logcat

      • 调用

        • [adb] logcat [options...] [filter-spec]...
      • 说明

        • adb logcat直接使用.(一次性执行shell)
        • 或执行adb shell中再执行logcat.(执行多个shell指令)
    • 前言

      • 缓冲池

        • 进行编号了,name:index索引.
      • 默认缓冲池

        • main,system,crash.
        • 对应应用,系统,异常堆栈.
    • 选项

      • -b buffer

        • 查看指定日志缓冲池
      • -c,--clear

        • 清理指定缓冲区并退出.
        • 清理默认缓冲池.
      • -e expr | --regex=expr

        • 正则表达式输出,匹配msg.
      • -m count | --max-count=count

        • 输出n行后停止.
      • --print

        • --regex,--max-count一起使用.
        • 伪代码
        def print(arg,n):
           index = 0
           while index < n:
               data = log.read()
               if re.match(arg,data):
                   index += 1
               print(data)
        
      • -f fliename

        • 输出到文件,默认stdout.重定向时需注意.
      • -g --bufer-size

        • 查看各个日志缓冲池的大小.
      • -n count

        • 设置循环队列大小.默认4.
      • -r kbytes

        • 设置循环队列大小.16kbytes.
      • -s

        • 不输出.
      • -v format

        • 指定输出日志的格式化形式.
      • -c

        • 清理所有日志缓存并推出.
      • -t count

        • 输出最新的n条.
      • -t 'time'

        • 指定时间开始输出.
      • --pid=pid

        • 输出指定pid的日志.
    • 输出简介

      • tag

        • 对日志的标记,简单的介绍.
      • priority

        • 日志的优先级.
        • VERBOSE<DEBUG<INFO<WARNING<ERROR<FATAL
        • 一般是用首字母显示.
      • demo

        ## logcat -v brief output
        I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}
        
        • I表示优先级ActivityManager表示输出tag.
        • 585进程号,:后的则是信息.
      • 过滤

        • tag:priority
        • tag可以是正则.
      • 过滤与环境变量

        • export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"设置.
        • logcat默认参数,避免重复编写.
  4. 输出格式化-v

    • 说明

      • 对内容格式化.
      • 一般是加时间戳,进程号,线程号,换行格式化输出.
    • 参数

      • 总览

        • 总会有pri + msg.
      • brief

        • 输出从简pri:tag:pid:msg
      • long

        • 一条日志多行显示,msg和其他的不在一行.
      • process

        • 仅输出pid
      • raw

        • 仅输出msg
      • tag

        • 仅输出tag
      • thread

        • 输出pri:pid:tid:msg
      • threadtime

        • date:time:pri:pid:tid:msg
      • time

        • date:time:pri:pid:msg
    • 格式化后字段格式化

      • 说明

        • 对字段的值进行格式化.
        • 比如日期按照UTC,时间戳值等.
      • color

        • 不同pri不同颜色.
      • epoch

        • 时间是1970,1,1开始的时间戳.
      • monotonie

        • CPU系统时间.
      • uid

        • 输出uid,android id.
      • usec

        • 精确到毫秒.
      • UTC

        • UTC格式的时间.
      • year

        • 输出年.
      • zone

        • 日期加上时区.
    • 缓冲池选择-b

      • default

        • main,system,crash
      • radio

        • 媒体电话相关日志.
      • events

        • 解析后的信息.
      • main

        • 应用产生的日志.
      • system

        • 系统产生的日志.
      • crash

        • 发生崩溃的日志.
      • all

        • 所有.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
adb logcat一个在移动端开发和测试中广泛使用的命令。它用于输出设备的日志,以便分析错误原因。adb logcat命令有多种常用的选项和过滤项可以使用。其中一些常用的选项包括: 1. "-s"选项:只显示指定标签的日志,例如"adb logcat -s SWVDEC"可以显示SWVDEC标签的日志。 2. "-v"选项:设置日志的输出格式,例如"adb logcat -v threadtime"可以查看日志的输出时间和线程信息。 3. "-c"选项:清空所有的日志缓存信息,例如"adb logcat -c"可以清空日志缓存。 4. "-d"选项:将缓存的日志输出到屏幕上,并且不会阻塞,例如"adb logcat -d"可以将缓存的日志输出到屏幕上。 5. "-t"选项:输出最近的几行日志,输出完毕后退出,不会阻塞,例如"adb logcat -t 5"可以输出日志缓冲区的最近5行日志。 6. "-g"选项:查看日志缓冲区的信息,例如"adb logcat -g"可以查看日志缓冲区的信息。 7. "-B"选项:以二进制形式输出日志,例如"adb logcat -B"可以以二进制形式输出日志。[2] adb logcat命令还可以通过使用管道和grep命令来过滤日志,输出指定标签的日志,并且可以将日志保存到文件中。例如,"adb logcat | grep -E “android|system” > /home/cherish/log.txt"可以过滤出带有"android"或者"system"标签的日志,并将其保存到文件中。另外,在Windows上不能使用grep命令,可以使用findstr命令代替。[1] 总之,adb logcat命令是一个非常有用的工具,可以帮助开发人员和测试人员分析设备的日志,定位和解决问题。[3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值