如何在LogCat里过滤标签

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在LogCat里过滤标签相关的知识,希望对你有一定的参考价值。

我在LogCat之前创建了一个TextField "Filter",希望能过滤标签,我该怎么做呢

adb logcat -s <tag>[:priority]

-s              Set default filter to silent.
               Like specifying filterspec '*:s'

 
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"



  查看积分策略说明选项

禁用 URL 识别

禁用 表情

禁用 Discuz!代码

使用个人签名

接收新回复邮件通知

标题 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
-M <1,0>        Set enable copy(Move) the log to oms_log_path
-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)
-g              get the size of the log's ring buffer and exit
-b <buffer>     request alternate ring buffer
                 ('main' (default), 'radio', 'events')
-B              output the log in binary


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"

示例:

    看radio log
    logcat -b radio

    I/RILC    (   46): 39 0d 0a
    I/RILC    (   46): AT[0]< +ECIND: 1,16,99
    I/RILC    (   46): AT[0]< +ECSQ: 16,99
    I/RILC    (   46): <<<< pCh[0]...
    I/RILC    (   46): 0d 0a 2b 45 43 49 4e 44 3a 20 31 2c 31 37 2c 39 39 0d 0a 0d 0a 2b 45 43 53 51 3a 20 31 37 2c 39
    I/RILC    (   46): 39 0d 0a
    I/RILC    (   46): AT[0]< +ECIND: 1,17,99
    I/RILC    (   46): AT[0]< +ECSQ: 17,99查看warning以上的log
    logcat *:w

    E/SensorManager( 102): smjni------jni data_open
    E/        (   49): b433 6155
    E/        (   49): b433 6157
    E/gralloc ( 102): [unregister] handle 0x2debd0 still lock
    W/BatteryService( 102): get battery health[0] 'Charging'
    W/BatteryService( 102): get battery health='Good'
    W/BatteryService( 102): get battery health[0] 'Charging'
    W/BatteryService( 102): get battery health='Good'过滤查看dalvikvm的log
    logcat -s dalvikvm 或者 logcat dalvikvm *:s

    D/dalvikvm( 257): GC freed 1191 objects / 343344 bytes in 65ms
    D/dalvikvm( 257): GC freed 1191 objects / 343400 bytes in 64ms
    D/dalvikvm( 257): GC freed 1191 objects / 343368 bytes in 65ms
    D/dalvikvm( 257): GC freed 1191 objects / 343416 bytes in 70ms
    D/dalvikvm( 257): GC freed 1191 objects / 343384 bytes in 64ms

    备注:logcat的过滤方式有点儿怪异,并不是直接指定要过滤的tag并指定priority就行,必须要设定所有的为silent,在此基础上设置的tag过滤才成功。
    所以,logcat appname:v 是不能成功过滤log的。过滤多个app 的log
    logcat -s dalvikvm vold

    D/vold    (   43): door_sock=10
    D/vold    (   43): fw_sock=7
    D/vold    (   43): uevent_sock=6
    D/dalvikvm( 257): GC freed 1191 objects / 343384 bytes in 76ms
    D/dalvikvm( 257): GC freed 1191 objects / 343368 bytes in 81ms
    D/dalvikvm( 257): GC freed 1191 objects / 343400 bytes in 64ms
    D/vold    (   43): select result=1log保存到文件
    logcat > 1.txt (">"是windows用的数据流导向符号)

    尝试用-f选项,结果报错。
    logcat -f 1.txt
    couldn't open output file: Read-only file system
参考技术A DDMS输出logcat信息的窗口有个 + 加号标志,点击一个输入 Filter,就会新建一个Filter选项卡,里面都是跟Filter相关log信息 参考技术B 你可以在一个shell里运行logcat,然后通过grep来传输 参考技术C logcat -s Filter:I *:S在-s前加上-d可以只查看当前已有记录后就关闭输出流 参考技术D logcat -s Filter:I *:S在-s前加上-d可以只查看当前已有记录后就关闭输出流。
logcat是Android中一个命令行工具,可以用于得到程序的log信息。
adb logcat -s <tag>[:priority]

-s Set default filter to silent.
Like specifying filterspec '*:s'

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里过滤标签的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Android adb logcat 按标签名称排除某些消息?

如何在 Android Studio logcat 中过滤多个单词

如何在 IntelliJ 的 logcat 中仅过滤我的应用程序日志? [复制]

Android Studio Logcat 过滤器精确标签

Logcat 按应用程序命令行过滤,不带标签

如何在 Android Studio 中过滤 logcat?