adb - logcat

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

好嘞~上菜!

Android log系统

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

logcat命令格式

语法格式:

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

PC端执行:

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

shell执行:

  >>> adb shell

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

停止输出:

  ctrl+c

logcat缓冲区介绍

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

目前定义了4个Log缓冲区:

        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


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


-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会写入一个文件中,如果你操作时间较长可以想象一下,打开一个几十M的log那画面太美了~

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信息

菜齐了!!!

时间: 2024-10-09 17:51:02

adb - logcat的相关文章

【LOGCAT】adb logcat -h的帮助信息

adb logcat -h的帮助信息 Usage: logcat [options] [filterspecs] options include:   -s              Set default filter to silent.                   Like specifying filterspec '*:s'   -f <filename>   Log to file. Default to stdout   -r [<kbytes>]   Rot

adb logcat 查看日志

使用 logcat 命令 查看和跟踪系统日志缓冲区的命令logcat的一般用法是: [adb] logcat [<option>] ... [<filter-spec>] ... 下文介绍过滤器和命令选项,详细内容可参见Listing of logcat Command Options.    可以在开发机中通过远程shell的方式使用logcat命令查看日志输出: $ adb logcat    如果是在远程shell中可直接使用命令: # logcat 过滤日志输出 每一条日志

adb logcat 基本用法

入门android ,至少需要了解 adb 吧,那么打 log 也是必不可少的了. 下面简单介绍一下 adb logcat 基本用法: Usage: logcat [options] [filterspecs]options include:  -s              Set default filter to silent.                  Like specifying filterspec '*:s'  -f <filename>   Log to file.

adb logcat通过包名过滤(dos命令find后跟变量)

adb命令中似乎没有直接通过报名来过滤的功能,但是可以通过过滤进程的pid来过滤该应用的日志 过滤条件:该app在运行 实现原理: 1.获取该app运行时的pid 2.通过find命令,过滤pid的日志,就是该包的运行日志 实现: 1.在同一目录建立一文件:getpid.bat @echo off adb shell "ps | grep com.example.testprogram" 复制以上代码,保存 2.在同一目录建立另外一个问文件:getpid1.bat @echo off

ADB Logcat Tool 和 DebugLevel的设定

1. logcat Base ADB logcat 过滤方法(抓取日志) 2. 1 logcat tool 在<ADB logcat 过滤方法(抓取日志) >这篇文章中提到了过滤log的一些方法, 但是这并不代表不输出日志,只是没有显示出来. 此外在某些情况下需要对log设置开关,不少人都是通过添加一条条的判断语句,这有些太低效,所以自己就搞了一个工具类. 2.2 原理 2.2.1 DEBUG_LEVEL 首先设置几个DebugLevel(和adb logcat 相对应) private st

如何过滤 adb logcat 输出(转载)

转自:http://www.cnblogs.com/imouto/archive/2012/12/11/filtering-adb-logcat-output.html 简介: 本文介绍如何在 shell 命令行中过滤 adb logcat 输出的几个小技巧. 开发当中经常看到别人的 log 如洪水般瞬间刷满了屏幕,对自己有用的信息都被淹没了,影响心情也影响效率.下面是几个我所知道的过滤方法. 1. 只显示需要的输出,白名单 最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep

如何使用 adb logcat 查看某个进程的输出日志

adb logcat 默认是没有这个功能的,我实现了一个小bash函数,添加到你$HOME/.bashrc 文件中: # 作用:能够通过进程名显示log # 用法:alogcat com.android.calendar or alogcat calendar # 当监控的进程异常退出时,需要重新运行此命令 function alogcat() { OUT=$(adb shell ps | grep -i $1 | awk '{print $2}') OUT=$(echo $OUT | sed

几种在shell命令行中过滤adb logcat输出的方法

我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法. 1.只显示需要的输出(白名单) 最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配.简单的匹配一行当中的某个字符串,例如 MyApp: adb logcat | grep MyApp       adb logcat | grep -i

android studio 中 adb logcat 在这里敲

官方视频和网络大都没有详细介绍命令行(IDE集成的那个比较容易看到)下 logcat 最初怎么进入,倒是具体用法详细的翻译了官网的文档. 所以记录如下: (1)下面的官网上写了 https://developer.android.com/studio/command-line/logcat.html#Syntax (科学上网) (2)摘要如下: Command-line Syntax [adb] logcat [<option>] ... [<filter-spec>] ... Y

adb logcat 查看日志 (转载)

转自:http://blog.csdn.net/xyz_lmn/article/details/7004710 使用 logcat 命令 查看和跟踪系统日志缓冲区的命令logcat的一般用法是: [adb] logcat [<option>] ... [<filter-spec>] ... 下文介绍过滤器和命令选项,详细内容可参见Listing of logcat Command Options.   可以在开发机中通过远程shell的方式使用logcat命令查看日志输出:   $