android logcat抓取app日志

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android logcat抓取app日志相关的知识,希望对你有一定的参考价值。

参考技术A 一.logcat抓log方法:adb logcat命令,可以加条件过滤

1.安装SDK(参考android sdk环境安装)

2.使用数据线链接手机,在手机助手的sdcard中建立一个1.log的文件或在抓日志时直接导出到电脑位置

3.程序运行cmd,进入到含有adb.exe目录

4.输入adb devices 查看设备是否连上

5.输入抓取命令:adb logcat -s *:E > /mmt/sdcard/1.log或logcat -s '*:E' >d:/1.log,

6.使用手机打开app操作崩溃一次(如果想中途停止按下ctrl+c)

7.查看日志抓取文件,分不清楚是那个时间段所造成的后果

8.加入命令:-v time 就会显示出时间

9.输入命令adb logcat -v time -s *:E > /mmt/sdcard/1.log(eg:adb logcat -v time -s appname:E>d:/1.log)

10.查看结果

ps:

adb logcat -v time -s appname:E>d:/1.log

-v 显示日志格式  -v time 以时间为显示格式

-s 默认过滤,不显示默认tag。系统把tag的默认过滤级别是设置为Verbos,tag需要显示。如果设置-S等同于*:V

appname:E 显示appname操作中优先级大于等于“error”的日志

二、log过滤--根据Log信息级别

• V-(verbose) -明细 (最低优先级) • D-(debug)-调试• I-(information)-信息• W-(warning)-警告• E-(error)-错误

• F — 严重错误• S — 无记载 (最高优先级,没有什么会被记载)

三、  

log过滤-

  log过滤器使用(  

adb logcat tag:priprity)

过滤器表达式的格式是tag:priority ... ,其中tag是标记(可以是具体的,*表示所有), priority是最小的优先级,可以是组合

adblogcat ActivityManager:I MyApp:D *:S

adblogcat * :W -----所有优先级大于等于“warning”的日志

adblogcat * :E -----所有优先级大于等于“error”的日志

四、log输出-log控制日志格式 adb logcat -v 格式

brief — 显示优先级/标记和原始进程的PID (默认格式)

process — 仅显示进程PIDtag — 仅显示优先级/标记

thread — 仅显示进程:线程和优先级/标记

raw — 显示原始的日志信息,没有其他的元数据字段

time — 显示日期,调用时间,优先级/标记,PID

long —显示所有的元数据字段并且用空行分隔消息内容

eg:adb logcat -v thread

五.log输出-附加缓冲区:adb logcat -b 

radio — 查看包含在无线/电话相关的缓冲区消息

events — 查看事件相关的消息

main — 查看主缓冲区 (默认缓冲区)

adb logcat -b  radio

什么也不加代表默认缓冲

六.log输出-log选项列表

-b  指定要查看的日志缓冲区,可以是system,events ,radio,main . 默认值是system和main 。

-c 清楚屏幕上的日志. 

-d 输出日志到屏幕上. 

-f  指定输出日志信息的,默认是stdout . 

-g 输出指定的日志缓冲区,输出后退出. 

-n  设置日志的最大数目.,默认值是4,需要和 -r 选项一起使用。 

-r  每时输出日志,默认值为16,需要和-f 选项一起使用. 

-s 设置默认的过滤级别为silent. 

-v  设置日志输入格式

APP 日志分析

1. 首先通过adb devices查看设备是否连接成功

2.通过adb logcat命令抓取日志

Logcat 日志文件—android日志提供了记录和查看系统调试信息的功能,日志都是从各种软件和一些系统的缓冲区区记录下来的,缓冲区可以通过logcat来查看和是使用

Logcat输出量大,定义了4个log缓冲区:

Radio:输出通信系统的log

System:输出系统组件的log

Events:输出事件 的log

Main:所有的java 层(默认)

切换日志输出   Adb logcat -b radio选择radio 缓冲区的输出

3.adb logcat -v time  (-v time 为了获取日志时间)  

4.日志分析:

可通过包名来过滤日志,

将程序运行在前台,通过命令查看应用包名称:adb shell dumpsys | findstr "mFocusedActivity"

5.发生 crash 问题,搜索关键字 force finishing  (往上找日志:FATAL EXCEPTION—Force finish)

6.ANR(Application not responding)应用无响应,当应用操作一段时间内系统无法处理时,系统会弹出无响应的对话框。

通过ANR in 过滤数据 从上往下找数据

ANR需要提交的日志文件:logcat(从ANR in 开始+cpu使用之后)+Trace.txt(保存的是最后一次anr 的信息)

7.出现多次anr:将dropbox 下的data_app_anr 直接给开发人员

通过dropbox 收集一段时间内的异常信息(包括ANR)

/data/system/dropbox  

Data_app 是第三方的app

8.App 发生异常

l  首先判断是崩溃还是无响应anr(根据对话框进行)

l  Adb logcat抓取日志文件 如果是ANR 取dropbox下面的data_app_anr

l  复现场景 复现步骤复现环境

以上是关于android logcat抓取app日志的主要内容,如果未能解决你的问题,请参考以下文章

adb抓取前3分钟的logcat

APP 日志分析

如何获取 android 的系统日志 logcat

logcat抓取日志不能实时查看

DDMS的logcat不输出日志怎么解决

锤子手机上如何查看其logcat日志