android系列(三)android logcat

kiduo0 2016-07-13

. logcat是Android中一个命令行工具,可以用于得到程序的log信息。
开发过程中如何输出想要的信息到log?
    Log 类是一个日志类,您可以在代码中使用 logcat 打印出消息。
      常见的日志记录方法包括:
    v(String, String) (verbose)           显示全部信息
    d(String, String) (debug)              显示调试信
    i(String, String) (information)    显示一般信息
    w(String, String) (warning)         显示警告信息
    e(String, String) (error)                 显示错误信息
log的例子:

Log.i("MyActivity", "MyClass.getView() — get item number " + position);
logcat 命令获取log:adb logcat
logcat 将输出类似如下信息:
    I/MyActivity( 1557): MyClass.getView() — get item number 1

实际例子


import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;


public class MainActivity extends AppCompatActivity {

//添加一个tag,方便知道是哪个查log
    public static java.lang.String TAG="MyApp";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

//TAG 标记
        Log.v(TAG, "LOGV,我是黑色的****************************");
        Log.d(TAG,"LOGD,我是蓝色的****************************");
        Log.i(TAG,"LOGI,我是绿色的****************************");
        Log.w(TAG,"LOGW,我是橙色的****************************");
        Log.e(TAG,"LOGE,我是红色的****************************");

    }


}

二 .  logcat 缓冲区— 缓冲区介绍
Android的Log 输出量巨大,特别是通信系统的Log,因此,Android把Log输出到不同的缓冲区中。目前定义了4个Log缓冲区:
Radio:输出通信系统的Log
System:输出系统组件的log
Event:输出event模块的log
Main:所有java层的log,以及不属于上面3层的Log
缓冲区主要给系统组件使用,一般的应用无需关心,应用LOG都输出到main缓冲区中。

三。logcat的命令

1.查看缓冲区的log命令:-b 后面跟缓存区名

adb logcat -b main -b system -b radio -b event

2. 清除缓冲区中的全部日志并退出(清除完后可以使用-g 查看缓冲区)

adb logcat -c

3.将缓冲区的log转存到屏幕中,然后退出

adb logcat -d

4.将log输出到指定的文件中 <文件名>. 默认为标准输出(stdout)

-f <filename>

常常和-c和-r 搭配使用

------------------------------------------------------------------------------------------

logcat要adb shell之后再设备中运行,不然会报错:

C:\Users\kanglimin>adb logcat -f E:\logcat\a.txt -n 2 -r 1
couldn't open output file: Read-only file system

---------------------------------------------------------------------------------------------

logcat -f /data/local/tmp/log.txt -n 10 -r 1

-rw------- root     root          258 2016-07-13 15:47 log.txt
-rw------- root     root         1056 2016-07-13 15:47 log.txt.1
-rw------- root     root         1066 2016-07-13 15:47 log.txt.10
-rw------- root     root         1056 2016-07-13 15:47 log.txt.2
-rw------- root     root         1058 2016-07-13 15:47 log.txt.3
-rw------- root     root         1056 2016-07-13 15:47 log.txt.4
-rw------- root     root         1066 2016-07-13 15:47 log.txt.5
-rw------- root     root         1056 2016-07-13 15:47 log.txt.6
-rw------- root     root         1054 2016-07-13 15:47 log.txt.7
-rw------- root     root         1054 2016-07-13 15:47 log.txt.8
-rw------- root     root         1056 2016-07-13 15:47 log.txt.9

5.打印日志缓冲区的大小并退出

C:\Users\kanglimin>adb logcat -g
/dev/log/main: ring buffer is 256Kb (255Kb consumed), max entry is 5120b, max pa
yload is 4076b
/dev/log/system: ring buffer is 256Kb (95Kb consumed), max entry is 5120b, max p
ayload is 4076b

6.设置日志的最大数目<count> ., 默认值是4,需要和 -r 选项一起使用。

-n <count> 文件个数

7.每<kbytes> 时输出日志,默认值为16,需要和-f 选项一起使用

-r <kbytes> 单位是KB

8.设置过滤器

-s

9.设置输出格式的日志消息。默认是短暂的格式。支持的格式列表

-v <format>

logcat 格式化输出— 参数说明
日志消息包含一个元数据字段,除了标签和优先级。您可以修改输出显示一个特定的元数据字段格式的消息。为此,您使用- v选项来指定一个支持的输出格式。以下为支持的格式:
brief —显示优先级/标记和过程的PID发出的消息(默认格式)
process — 只显示PID
tag —只显示优先级/标记
raw —显示原始的日志消息,没有其他元数据字段
time —调用显示日期、时间、优先级/标签和过程的PID发出消息
threadtime —调用显示日期、时间、优先级、标签以及PID TID线程发出的消息
long —显示所有元数据字段与空白行和单独的消息

 例子:

当logcat开始,您可以指定您想要的输出格式使用- v选项:
    [adb] logcat [-v <format>]
这里有一个例子,展示了如何生成消息的线程输出格式:
    adb logcat -v thread
请注意,您只能指定一个输出格式- v

三。 log的优先级

优先级使用字符标识,以下优先级从低到高
V — Verbose (最低优先级)
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S— Silent

方便查找用户查看和自己相关的log

减少日志的输出可以建立一个过滤器:
过滤语法:tag:priority
adb logcat ActivityManager:I MyApp:D *:S
过滤TAG为ActivityManager输出级别大于I的日志与TAG为MyApp输出级别大于D的日志
adb logcat *:W   设置过滤级别为W以上      
常用的设置为环境变量:
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"

Log.i("MyActivity", "MyClass.getView() — get item number " + position);

logcat命令获取log:adb logcat

logcat将输出类似如下信息:

  I/MyActivity( 1557): MyClass.getView() — get item number 1

相关推荐