android系列(三)android logcat

. 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命令获取logadb logcat

 

logcat将输出类似如下信息:

 

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android SDK下, 如何在程序中输出日志 以及如何查看日志. 闲话少说,直接进入正题 在程序中输出日志, 使用 android.util.Log 类. 该类提供了若干静态方法 Log.v(String tag, String msg); Log.d(String tag, String msg); Log.i(String tag, String msg); Log.w(String tag, String msg); Log.e(String tag, String msg); 分别对应 Verbose, Debug, Info, Warning,Error. tag是一个标识,可以是任意字符串,通常可以使用类名+方法名, 主要是用来在查看日志时提供一个筛选条件. 程序运行后 并不会在 ide的控制台内输出任何信息. 如果要后查看日志 请使用 adb logcat 关于adb的更多信息请查看官方网站. 当执行 adb logcat 后会以tail方式实时显示出所有的日志信息. 这时候我们通常需要对信息进行过滤,来显示我们需要的信息, 这时候我们指定的 tag就派上了用场. adb logcat -s MyAndroid:I 这时将只显示tag为MyAndroid,级别为I或级别高于I(Warning,Error)的日志信息. 示例代码如下: Java代码 1. package com.zijun; 2. 3. import android.app.Activity; 4. import android.content.Context; 5. import android.graphics.Canvas; 6. import android.os.Bundle; 7. import android.util.Log; 8. import android.view.MotionEvent; 9. import android.view.View; 10. 11. public class MyAndroid extends Activity { 12. 13. protected static final String ACTIVITY_TAG="MyAndroid"; 14. 15. @Override 16. protected void onCreate(Bundle icicle) { 17. super.onCreate(icicle); 18. setContentView(new MyView(this)); 19. } 20. public class MyView extends View { 21. public MyView(Context c) { 22. super(c); 23. } 24. @Override 25. protected void onDraw(Canvas canvas) { 26. 27. } 28. @Override 29. public boolean onMotionEvent(MotionEvent event) { 30. Log.i(MyAndroid.ACTIVITY_TAG, "============================="); 31. 32. Log.d(MyAndroid.ACTIVITY_TAG, "Haha , this is a DEBUG of MyAndroid. "); 33. Log.i(MyAndroid.ACTIVITY_TAG, "Haha , this is a INFO of MyAndroid. "); 34. Log.w(MyAndroid.ACTIVITY_TAG, "Haha , this is a WARNING of MyAndroid. "); 35. 36. return true; 37. } 38.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值