Android 中Logcat的使用

来源:互联网 发布:网络女主播视频 编辑:程序博客网 时间:2024/06/01 10:26
Logcat过滤及常见用法整理

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
-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
    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=1
    log保存到文件
    logcat > 1.txt (">"是windows用的数据流导向符号)

    尝试用-f选项,结果报错。
    logcat -f 1.txt
    couldn't open output file: Read-only file system


////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////

Android的Logcat用于显示系统的调试信息,可在分别以下几个地方查看和调用logcat:


1.eclipse的Debug模式或DDMS模式下的会有一个Logcat窗口,用于显示log日志

只需在eclipse中启动Android模拟器,切换到DDMS或debug模式下,就会有Logcat窗口,窗口右上方有一系列图标,其中V、D、I、W、E五个图标为五个调试信息过滤器:

V:不过滤输出所有调试信息 包括 VERBOSE、DEBUG、INFO、WARN、ERROR
D:debug过滤器,输出DEBUG、INFO、WARN、ERROR调试信息
I:info过滤器,输出INFO、WARN、ERROR调试信息
W:waring过滤器,输出WARN和ERROR调试信息
E:error过滤器,只输出ERROR调试信息


2.Android命令模式下,在启动一个模拟器是可以选择是否需要启动logcat:

Android Emulator命令的用法: emulator [options] [-qemu args]
1.Android Emulator命令的用法: emulator [options] [-qemu args]

启动模拟器命令:emulator -avd <name> -logcat <tags>;
name:模拟器名字,tags调试信息过滤器类型
例如:emulator -avd GPhone -logcat w
启动GPhone模拟器并运行logcat显示调试信息,调试信息的过滤器是w(可替换为v、d、i、e),代表只显示waring和error两类调试信息。

2.Android adb 命令:adb logcat [ <filter-spec> ] - View device log
<filter-spec> == <priority>/<tag>,(pritrity标签,tag为过滤类型)
例如:2.1、adb logcat 显示所有调试信息
2.2、adb logcat *:w 显示waring过滤器过滤后的调试信息
2.3、adb logcat Test1:V Test2:D 显示标签为Test1的所有调试信息,以及显示标签为Test2Debug过滤器过滤后的调试信息



3.Android程序中访问调试日志,并显示:


logcat介绍命令选项。
-s 默认设置过滤器
-f      输出到日志文件
-c 清除日志
-d 获取日志
-g 获取日志的大小
-v      格式设置日志(见下面的格式打印格式)


-v 格式 例
brief W/tag ( 876): message
process W( 876) message (tag)
tag W/tag : message
thread W( 876:0x37c) message
raw message
time 09-08 05:40:26.729 W/tag ( 876): message
threadtime 09-08 05:40:26.729 876 892 W tag : message
long [ 09-08 05:40:26.729 876:0x37c W/tag ] message


代码例子:

AndroidManifest.xml添加读取权限
<uses-permission android:name="android.permission.READ_LOGS" />

清除日志
try {
Runtime.getRuntime().exec("logcat -c");
} catch(Exception e) {

获取日志
try {
 ArrayList<String> commandLine = new ArrayList<String>();
 commandLine.add( "logcat");
 commandLine.add( "-d");
 commandLine.add( "-v");
 commandLine.add( "time");
 commandLine.add( "-s");


原创粉丝点击