logcat调试系统

日志存放位置:/dev/log

shell@xxx:/ $ ls /dev/log -l
crw-rw-rw- root     log       10,  48 2011-01-01 12:04 events
crw-rw-rw- root     log       10,  49 2011-01-01 12:04 main
crw-rw-rw- root     log       10,  47 2011-01-01 12:04 radio
crw-rw-rw- root     log       10,  46 2011-01-01 12:04 system

提示信息的格式:等级/标签 (pid):日志内容

E/NetworkController(  934): onReceive ETHERNET_STATE_CHANGED_ACTION 

等级

V:Verbose
D: Debug
I: Info
W: Warn
E: Error
F: Fatal
S: Silent (supress all output)

标签:用来区分不同的调试信息,必须唯一。

 

logcat命令

shell@xxx:/ $ logcat --help 
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>]   Rotate log every kbytes. (16 if unspecified). Requires -f
  -n <count>      Sets max number of rotated logs to <count>, default 4
  -v <format>     Sets the log print format, where <format> is one of:

                  brief process tag thread raw time threadtime long

  -c              clear (flush) the entire log and exit
  -d              dump the log and then exit (don't block)
  -t <count>      print only the most recent <count> lines (implies -d)
  -t '<time>'     print most recent lines since specified time (implies -d)
  -T <count>      print only the most recent <count> lines (does not imply -d)
  -T '<time>'     print most recent lines since specified time (not imply -d)
                  count is pure numerical, time is 'MM-DD hh:mm:ss.mmm'
  -g              get the size of the log's ring buffer and exit
  -b <buffer>     Request alternate ring buffer, 'main', 'system', 'radio',
                  'events', 'crash' or 'all'. Multiple -b parameters are
                  allowed and results are interleaved. The default is
                  -b main -b system -b crash.
  -B              output the log in binary.
  -S              output statistics.
  -G <size>       set size of log ring buffer, may suffix with K or M.
  -p              print prune white and ~black list. Service is specified as
                  UID, UID/PID or /PID. Weighed for quicker pruning if prefix
                  with ~, otherwise weighed for longevity if unadorned. All
                  other pruning activity is oldest first. Special case ~!
                  represents an automatic quicker pruning for the noisiest
                  UID as determined by the current statistics.
  -P '<list> ...' set prune white and ~black list, using same format as
                  printed above. Must be quoted.

filterspecs are a series of 
  <tag>[:priority]

where <tag> is a log component tag (or * for all) and priority is:
  V    Verbose
  D    Debug
  I    Info
  W    Warn
  E    Error
  F    Fatal
  S    Silent (supress all output)

'*' means '*:d' and <tag> by itself means <tag>:v

If not specified on the commandline, filterspec is set from ANDROID_LOG_TAGS.
If no filterspec is found, filter defaults to '*:I'

If not specified with -v, format is set from ANDROID_PRINTF_LOG
or defaults to "brief"

用法:logcat   [选项]   [过滤规则]

-s:过滤,输出指定标签的信息

// 打印标签为"NetworkController"的所有日志
shell@xxx:/ $ logcat -s "NetworkController"
// 打印标签为"NetworkController",并且等级为 D 的日志
shell@xxx:/ $ logcat -s "NetworkController:D"

-f <filename>:日志输出到文件,默认到标准输出

shell@xxx:/ # logcat -f /data/local/tmp/log.txt

-v <format>:设置日志的打印格式,format只能取下面中的一个,brief / process / tag / thread / raw / time / threadtime / long

brief:显示等级、标签、pid和消息,是默认格式

process:显示等级、pid和消息

tag:显示等级、标签和消息

thread:显示等级、pid、线程和消息

raw:只显示消息

time:显示时间、等级、标签、pid和消息

threadtime:显示时间、等级、pid、线程和消息

long:显示时间、等级、pid、线程和消息,但消息内容在下一行显示,而且每条日志之间空一行。

// 日志添加时间(最常用)
shell@xxx:/ # logcat -v time

-c:清空日志信息

shell@xxx:/ # logcat -c

-d:打印日志并退出,不阻塞

shell@xxx:/ # logcat -d

-t <count>:打印最近count行日志,不阻塞

shell@xxx:/ # logcat -t 100

-g:查看缓冲区大小并退出

shell@xxx:/ # logcat -g
main: ring buffer is 256Kb (7Kb consumed), max entry is 5120b, max payload is 4076b
system: ring buffer is 256Kb (3Kb consumed), max entry is 5120b, max payload is 4076b
crash: ring buffer is 256Kb (0b consumed), max entry is 5120b, max payload is 4076b

-b <buffer>:查看指定缓冲区,允许多个 -b 参数,并且打印是交错的

<buffer>可取:main / system / radio / event / crash / all,默认为 -b main -b system -b carsh

shell@xxx:/ # logcat -b main -b radio

-B:以二进制形式输出日志

shell@xxx:/ # logcat -B

-S:输出统计数据

shell@xxx:/ # logcat -S

-G <size>:设置日志环缓冲区的大小,可以使用K或M

shell@xxx:/ # logcat -G 256Kb

 |grep:过滤日志中的字符串,与-s过滤标签不一样

shell@xxx:/ # logcat -b main -b system -b radio -v time |grep SETUP_DATA_CALL

>:输出日志到文件(windows系统)

shell@xxx:/ #  logcat -b radio -v time > d:/log.txt

 

posted @ 2018-03-16 18:03  LeeAaron  阅读(469)  评论(0编辑  收藏  举报