赞
踩
https://www.jianshu.com/p/9b657c3c3560
https://www.jianshu.com/p/9b657c3c3560
Android内核是基于Linxu kernel的,因此其log机制也是通用的,在Android内核中使用printk函数进行Log输出。与c语言的printf类似,printk提供格式化输入功能,同时,它也具有所有LOG机制的特点--提供日志级别过虑功能。printk提供了8种日志级别(详细的定义在include/linux/kern_levels.h中):
- #ifndef __KERN_LEVELS_H__
- #define __KERN_LEVELS_H__
-
- #define KERN_SOH "\001" /* ASCII Start Of Header */
- #define KERN_SOH_ASCII '\001'
-
- #define KERN_EMERG KERN_SOH "0" /* system is unusable */
- #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */
- #define KERN_CRIT KERN_SOH "2" /* critical conditions */
- #define KERN_ERR KERN_SOH "3" /* error conditions */
- #define KERN_WARNING KERN_SOH "4" /* warning conditions */
- #define KERN_NOTICE KERN_SOH "5" /* normal but significant condition */
- #define KERN_INFO KERN_SOH "6" /* informational */
- #define KERN_DEBUG KERN_SOH "7" /* debug-level messages */
-
- #define KERN_DEFAULT KERN_SOH "d" /* the default kernel loglevel */
-
- /*
- * Annotation for a "continued" line of log printout (only done after a
- * line that had no enclosing \n). Only to be used by core/arch code
- * during early bootup (a continued line is not SMP-safe otherwise).
- */
- #define KERN_CONT ""
-
- #endif
printk的最简单的使用方法:
- //KERN_ALERT表示日志级别,后面紧跟着要格式化字符串。
- printk(KERN_ALERT "This is the log printed by printk in linux kernel space.");
printk的带格式化输出使用方法:
printk(KERN_ERR "%s: Invalid parameter\n", __func__);
Android系统中,printk输出的日志信息保存在/proc/kmsg中,要查看/proc/kmsg的内容,只输入在命令行中输入如下命令
shell@rk3288_box:/ # cat /proc/kmsg
输出结果如图
小礼物走一走,来简书关注我
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。