zoukankan      html  css  js  c++  java
  • 浅谈app运行日志

    使用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

     转载:https://blog.csdn.net/flueky/article/details/53645361

  • 相关阅读:
    重学《C#高级编程》(序)
    分布式锁-基于redis的分布式锁实现
    CentOS 7.9 安装docker
    JAVA使用UDP收发文件
    MYSQL 查询指定范围内的经纬度
    tomcat 8.x 配置 HTTPS 协议
    JDBC 连接 Oracle 11g 集群
    [centos7] svn
    单例模式
    Extjs 中 Treepanel 实现级联选中效果
  • 原文地址:https://www.cnblogs.com/lhx0827/p/9645311.html
Copyright © 2011-2022 走看看