zoukankan      html  css  js  c++  java
  • 不是安卓工程师,也能看logcat日志

    来源:https://blog.csdn.net/flueky/article/details/53645361

    文章目录
    前言
    下载Android SDK
    配置环境变量
    打开手机开发者模式
    相关命令
    连接设备
    查看日志
    筛选日志
    根据日志级别筛选
    根据标签筛选
    根据PID(应用包名)筛选
    综合筛选
    保存日志
    保存到手机
    保存到电脑
    前言
    写这篇博客的灵感,来自于最近工作的刺激。手上有好几个项目不定期出现问题,而自己又去不了开发现场看日志分析问题、做debug操作。

    目前比较流行的两种查看日志的方式有:

    开发者通过在开发工具的logcat窗口查看日志输出。优点:具备日志筛选功能,能够比较容易的找到关键信息。缺点:需要装备整套的安卓开发环境。
    在程序中添加保存日志到文件的功能。优点:能够捕获到更完整详细的日志。缺点:保存的日志太多,几百上千行,看起来太累。
    #准备工作
    需要具备基础的计算机技能、Java开发环境和Android sdk。

    下载Android SDK
    下载地址:Windows、Mac、Linux

    下载完成后,目录结构截图如下:(以Mac版本为例,目录结构差异不大)


    通常下载下来的sdk只集成了基础的开发工具,如:模拟器、点9作图工具、ddms。看日志需要的adb工具在platform-tools目录下,可以运行tools目录下的android程序下载。


    完整下载后,应该有如下文件:


    配置环境变量
    不确定adb运行环境是否需要JRE(Java运行环境)支持,因为每次搭建Android开发需要先安装jdk、下载Android SDK、下载eclipse 或 AndroidStudio,所以未曾验证。只是提醒下,如果adb 使用有问题,可以考虑是否安装JRE。

    检查电脑上是否已安装JRE,可以尝试着运行如下命令,正确显示 jdk版本号为正常:


    将platform-tools目录添加到系统环境变量中,以方便在终端操作。
    以Mac环境为例,修改用户目录下.bash_profile文件。之后使用命令source ~/.bash_profile使修改的配置文件生效。


    依旧使用命令adb -version检查配置环境变量是否成功。


    打开手机开发者模式
    不同品牌的手机,打开开发者模式的方式大不相同,因此不做概述。

    相关命令
    做好一切,就可以将手机连接到电脑调试。个人觉得,Windows系统有个比较恶心的问题就是usb的驱动。如果在使用中,同样遇到这个问题,建议使用豌豆荚等PC端的手机管理软件。他们会只能匹配usb驱动,类似于驱动精灵。打开开发者模式的方式,也做了相应的引导。

    连接设备
    启动adb服务:adb start-server
    查看连接设备:adb devices
    停止adb服务:adb kill-server

    *注:这里停止adb服务命令只做演示用途,查看日志时,在检查手机成功连接上电脑之后,不能停止adb服务。

    查看日志
    使用adb logcat命令,执行后如下:


    这输出的日志也是一大坨,而且还不停的输出,看上去眼花缭乱。主要是因为没做筛选。

    以上输出的信息包含了:日期、时间、PID、TID、日志级别、标签、日志内容。

    PID:可以看成app运行时,在系统中的唯一的一个标识。
    UID:PID可以对应多个TID,主要是由于支持多线程。每个线程对应一个TID。
    日志级别:Android Log类源码中,日志有6个级别。常用的5个分别是 V(Verbose 明细,最低级别)、D(Debug 调试)、I(Info 信息)、W(Warn 警告)、E(Error 错误)。
    标签:开发中,标记日志的一个属性。如,使用类名,表示是哪个类里输出的日志。

    筛选日志
    可以根据PID(同一时刻包名和PID是一一对应关系)、TID、日志级别、日志标签、日志内容做筛选。考虑到篇幅关系暂且只介绍使用PID、日志级别、标签筛选日志。

    根据日志级别筛选
    命令模板:adb logcat 标签:日志级别 (*:s)。

    筛选Warn级别以上的日志(包含Error)命令:adb logcat *:W 表示不匹配标签。


    根据标签筛选
    筛选System的日志命令:adb logcat System:* *:s第一个星号表示不匹配日志级别, *:S用于设置所有标记的日志优先级为S,这样可以确保仅输出符合条件的日志。


    根据PID(应用包名)筛选
    由于应用每次启动后,系统分配的PID都不一样。因此,需要根据包名或UID筛选日志时,需要先启动应用,再使用命令adb shell dumpsys meminfo 包名 查看到UID信息,最后根据PID筛选日志。

    根据PID 18270(图中所示)筛选日志 ,命令adb logcat | grep 18270:

    图中可以看出,PID 18270 是唯一的,右边的TID可以有多个值。横向匹配的18270 是没有添加*:s导致的。

    综合筛选


    保存日志
    保存到手机
    命令模板:adb logcat -f 手机上文件目录 标签:日志级别 *:s | grep PID

    如:adb logcat -f /sdcard/Download/log.txt JPush:D *:s | grep 18270

    保存到电脑
    命令模板:adb logcat > 电脑上文件目录 标签:日志级别 *:s | grep PID

    如:adb logcat > ~/Desktop/log.txt JPush:D *:s | grep 18270

    保存的文件内容如下:

    觉得有用?那打赏一个呗。我要打赏

    此处是广告:Flueky的技术小站
    ————————————————
    版权声明:本文为CSDN博主「小飞哥0217」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/flueky/article/details/53645361

  • 相关阅读:
    luogu P3959 宝藏
    hdu4035 Maze
    [hdu2899]Strange fuction
    luogu4407 [JSOI2009]电子字典 字符串hash + hash表
    SPOJ6717 Two Paths 树形dp
    luogu4595 [COCI2011-2012#5] POPLOCAVANJE 后缀自动机
    后缀数组
    luoguP1659 [国际集训队]拉拉队排练 manacher算法
    luoguP4555 [国家集训队]最长双回文串 manacher算法
    CF17E Palisection 差分+manacher算法
  • 原文地址:https://www.cnblogs.com/LiTZen/p/12450104.html
Copyright © 2011-2022 走看看