linux下logcat命令,Android logcat 命令以及 Log机制

Android logcat命令

1. logcat -c 清除已有log信息

2.logcat -b main 显示主缓冲区的log

logcat -b radio 显示无线缓冲区的log

logcat -b events 显示事件缓冲区的log

3.logcat -f [filename] 将log保存到指定的文件中,例如 logcat -b radio -f /data/radio.log

4.logcat -v 设置logcat输出的格式

主要有7种输出格式:

1. brief — Display priority/tag and PID of originating process (the default format).

2. process — Display PID only.

3. tag — Display the priority/tag only.

4. thread — Display process:thread and priority/tag only.

5. raw — Display the raw log message, with no other metadata fields.

6. time — Display the date, invocation time, priority/tag, and PID of the originating process.

7. long — Display all metadata fields and separate messages with a blank lines.

比较常用的是显示时间:logcat -v time &

5.logcat -g 查看缓冲区的大小

logcat -g main

logcat -g radio

logcat -g events

Log机制的一些理解:

1. 系统结构

应用程序调用应用程序框架层的Java接口(android.util.Log)来使用日志系统,这个Java接口通过JNI方法和系统运行库最终调用内核驱动程序Logger把Log写到内核空间中。

2. 关键代码及理解

一. 应用程序框架层日志系统Java接口的实现

代码位置:frameworks/base/core/java/android/util/Log.java文件中,实现日志系统的Java接口:

publicfinalclassLog {

/**

* Priority constant for the println method; use Log.v.

*/

publicstaticfinalintVERBOSE =2;

/**

* Priority constant for the println method; use Log.d.

*/

publicstaticfinalintDEBUG =3;

/**

* Priority constant for the println method; use Log.i.

*/

publicstaticfinalintINFO =4;

/**

* Priority constant for the println method; use Log.w.

*/

publicstaticfinalintWARN =5;

/**

* Priority constant for the println method; use Log.e.

*/

publicstaticfinalintERROR =6;

/**

* Priority constant for the println method.

*/

publicstaticfinalintASSERT =7;

........................

publicstaticintv(String tag, String msg) {

returnprintln_native(LOG_ID_MAIN, VERBOSE, tag, msg);

}

publicstaticintd(String tag, String msg) {

returnprintln_native(LOG_ID_MAIN, DEBUG, tag, msg);

}

publicstaticinti(String tag, String msg) {

returnprintln_native(LOG_ID_MAIN, INFO, tag, msg);

}

publicstaticintw(String tag, String msg) {

returnprintln_native(LOG_ID_MAIN, WARN, tag, msg);

}

publicstaticinte(String tag, String msg) {

returnprintln_native(LOG_ID_MAIN, ERROR, tag, msg);

}

publicstaticintprintln(intpriority, String tag, String msg) {

returnprintln_native(LOG_ID_MAIN, priority, tag, msg);

}

...................

/** @hide */publicstaticfinalintLOG_ID_MAIN =0;

/** @hide */publicstaticfinalintLOG_ID_RADIO =1;

/** @hide */publicstaticfinalintLOG_ID_EVENTS =2;

/** @hide */publicstaticfinalintLOG_ID_SYSTEM =3;

/** @hide */publicstaticnativeintprintln_native(intbufID,

intpriority, String tag, String msg);

}其中VERBOSE ,DEBUG, INFO,WARN,ERROR,ASSERT代表Log优先级,分别由对应的v,d,i,w,e,a方法实现写入。

在logcat中用

logcat  ActivityManager:w

命令显示ActivityManager标签中等于或高于WARN级别的Log

其中

LOG_ID_MAIN =0LOG_ID_RADIO =1LOG_ID_EVENTS =2LOG_ID_SYSTEM =3;为日志缓冲区,在底层定义了3个设备文件分别为:/dev/log/main、/dev/log/events和/dev/log/radio(),第4个日志缓冲区LOG_ID_SYSTEM并没有对应的设备文件,在这种情况下,它和LOG_ID_MAIN对应同一个缓冲区ID(为什么这样下面会提到)。

在整个Log接口中,最关键的地方声明了println_native本地方法,所有的Log接口都是通过调用这个本地方法来实现Log的注入。下面我们就继续分析这个本地方法println_native。0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值