• Android中logcat和日志打印


     一、logcat对日志过滤

    1.# logcat --help

    # 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"
    View Code

    1. logcat命令位置:/system/bin/logcat

    2.logcat的常用用法

    # logcat *:W 过滤日志则会将该级别及以上的日志输出

    # logcat ActivityManager:I MyApp:D *:S 表示输出tag=“ActivityManager”的Info以上级别日志,输出tag=“MyApp”的Debug以上级别日志,及其它tag的Silent级别日志(即屏蔽其它 tag 日志)。

    # logcat -d logcat应该是动态打印的,加-d后打印完log后退出,不阻塞
    # logcat -t 20 只打印最近的20行log,-T也是类似的功能,但是打印完后不退出。
    # logcat -f a.txt -f保存到文件中,不使用重定向符号的
    # logcat | grep -i myapp 忽略大小写。
    # logcat | grep --color=auto -i priv-app 匹配到的“priv-app”会显示出颜色
    # logcat | grep --color=auto 1979 只打印出进程PID为1979的log
    # logcat -c && logcat
    # logcat -v time 打印时加上时间
    # logcat -g 打印各个环形缓冲区的大小后退出
    # logcat -S 打印出统计信息
    # logcat | grep -E "Theft|u-blox" grep -E 正则表达式,可以一次性检索多个关键字
    # logcat <tag1>:<priority1> <tag2>:<priority2> 过滤低优先级的日志

    # logcat *:E   只查看错误打印

    3.有 3 种方式使用 logcat 打印日志:
    可以通过 IDE(比如 Android Studio)提供的 logcat 窗口查看打印的日志
    可以通过 adb 命令使用 logcat 在本地计算机进行日志查看
    通过 adb 命令进入模拟器或者所连设备的 shell 命令窗口,进行 logcat 的操作和使用

    4.设置输出日志等级
    通过设置优先级,过滤掉低优先级的日志,使用方式如: adb logcat <tag1>:<priority1> <tag2>:<priority2>
    示例: logcat PowerManagerService:I PackageManager:I 表示logcat时不打印PowerManagerService和PackageManager的优先级低于Info的log

    5.logcat选择打印的缓冲区:
    # logcat -b <buffer> 可以指定要打印的环缓冲区,“main”,“system”,“radio”或“events”。 允许多个-b连用,这样打印的结果是交错的,默认为: -b main -b system -b crash。
    radio - 查看缓冲区的相关的信息.
    events - 查看和事件相关的的缓冲区.
    main - 查看主要的日志缓冲区.
    system - 与系统相关的日志信息.

    6. logcat默认的几种输出格式为

    格式:logcat -v threadtime

    (1)brief格式为:<priority>/<tag>(<pid>): <message>  eg: D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0

    (2)process格式为:<priority>(<pid>) <message>  eg: D( 1785) Disconnected process message: 10, size: 0 (HeadsetStateMachine)

    (3)tag格式为:<priority>/<tag>: <message>  eg: D/HeadsetStateMachine: Disconnected process message: 10, size: 0

    (4)raw格式为:<message>   eg: Disconnected process message: 10, size: 0

    (5)time格式为:<datetime> <priority>/<tag>(<pid>): <message>  eg: 08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0

    (6)threadtime格式为:<datetime> <pid> <tid> <priority> <tag>: <message>  eg: 08-28 22:39:39.974 1785 1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0

    (7)long格式为:[ <datetime> <pid>:<tid> <priority>/<tag> ] <message>  eg: [ 08-28 22:39:39.974 1785: 1832 D/HeadsetStateMachine ] Disconnected process  message: 10, size: 0

    二、日志打印函数

    1.程序中使用ALOGx(),SLOGx(),RLOGx()来分别打印app,system,radio的log,

    x表示下面6种打印级别:
    V Verbose
    D Debug
    I Info
    W Warn
    E Error
    F Fatal

    比如:
    #define LOG_TAG "LedHal"
    ALOGI("hal_led_ioctl called: which=%d, status=%d", which, status);
    打印如下:

    I/LedHal ( 2284): hal_led_ioctl called: which=0, status=0 //打印等级/Tag (PID): message

    三、日志统计

    1.# logcat -b all -S 可以统计出各个log buffer中最健谈的log的进程、UID、TAG

    # logcat -b all -S
    size/num main               radio              events             system             crash  stats    performance   security           kernel             Total
    Total    4294940/52209      1224624/6903       386275/3669        1197331/12884      165/3   0/0     9132/180      0/0                0/0                7112467/75848
    Now      261517/3561        257987/1383        252696/2824        246225/2728        165/3           9132/180                                            1027722/10679
    Logspan  1:09:38.987(3.9%)  2:15:44.731(24.2%) 2:15:41.166(96.9%) 2:15:44.791(37%)   3:03.21         2:10:35.716                                         2:15:48.058
    Overhead 460933             335435             410840             398993             333             19212                                               1775074
    update time=0, report time=0, buffer rate = 0 Byte/sec, log rate = 0 sec-1
    buffer chatty rate = 15000 Byte/sec, log chatty rate = 100 sec-1
    
    最健谈的main log:
    Chattiest UIDs in main log buffer:                           Size   +/-  Pruned
    UID   PACKAGE                                               BYTES           NUM
    10061 com.android.systemui                                  51486  -14%    1256
    1000  system                                                40438  -67%    3478
      PID/UID   COMMAND LINE                                       "             "
     1612/1000  system_server                                    5384          2409
     2972/1000  com.coloros.persist.system                       2999           623
    
    
    最健谈的main log:
    Chattiest UIDs in radio log buffer:                          Size   +/-  Pruned
    UID   PACKAGE                                               BYTES           NUM
    1001  radio                                                246546  -3.6%   5766
    1000  system                                                11037  5.2X
    
    
    最健谈的event log:
    Chattiest UIDs in events log buffer:                         Size   +/-  Pruned
    UID   PACKAGE                                               BYTES           NUM
    1000  system                                               231850  +4.3%    260
      PID/UID   COMMAND LINE                                       "             "
     1612/1000  system_server                                  153760            14
    
    
    最健谈的system log:
    Chattiest UIDs in system log buffer:                         Size   +/-  Pruned
    UID   PACKAGE                                               BYTES           NUM
    1000  system                                               180236  -20%    8572
      PID/UID   COMMAND LINE                                       "             "
     1612/1000  system_server                                   69620          8238
     2972/1000  com.coloros.persist.system                      68819           324
    
    
    最健谈的crash log:
    Chattiest UIDs in crash log buffer:                          Size
    UID   PACKAGE                                               BYTES
    0     root                                                    165
    
    
    最健谈的performance log:
    Chattiest UIDs in performance log buffer:                    Size
    UID   PACKAGE                                               BYTES
    1000  system                                                 2909
      PID/UID   COMMAND LINE                                       "
     1612/1000  system_server                                     556
    
    
    最健谈的PID:
    Chattiest PIDs:                                              Size        Pruned
      PID/UID   COMMAND LINE                                    BYTES           NUM
     2904/1001  com.android.phone                              270946          5604
     1612/1000  system_server                                  240357         10661
    
    
    最健谈的TID:
    Chattiest TIDs:                                              Size        Pruned
      TID/UID   COMM                                            BYTES           NUM
     2904/1001  com.android.phone                              217685          4117
     1765/1000  android.bg                                      78212           147
    
    
    最健谈的events log中的TAG:
    Chattiest events log buffer TAGs:                            Size         Prune
        TAG/UID   TAGNAME                                       BYTES           NUM
       1003       auditd                                        89160           390
      30047/1000  am_pss                                        73004
    
    
    最健谈的TAG:
    Chattiest TAGs:                                              Size
      TID/PID/UID   LOG_TAG NAME                                BYTES
         2904/1001  SST                                        121294
                    auditd                                      89160
    View Code
  • 相关阅读:
    18.12.30 【sssx】Trie图
    18.12.30 【sssx】线段树
    18.12.25 POJ 1039 Pipe
    18.12.25 POJ 3525 Most Distant Point from the Sea(半平面+二分)
    18.12.25 POJ 1228 Grandpa's Estate
    18.12.22 luogu P3047 [USACO12FEB]附近的牛Nearby Cows
    18.12.21 DSA 中缀表达式的值
    18.12.21 luogu P3650 [USACO1.3]滑雪课程设计Ski Course Design
    18.12.21 【USACO】Times17
    18.12.20 DSA Full Tank?(DP+BFS)
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/10276971.html
Copyright © 2020-2023  润新知