Android 10 设置kernel log level
  R3jekIqJDwNw 2023年11月02日 46 0

有时候kernel log内容过多/过少影响我们分析问题,因此需要对kernel log进行设置。

查看平台默认kernel loglevel

$ cat /proc/sys/kernel/printk
6       6       1       7

kernle log级别为6 6 1 7

关闭所有kernel log

$ echo "0 6 1 7" >proc/sys/kernel/printk		//往printk文件写入“0 6 1 7”,关闭所有kernle log
$ cat /proc/sys/kernel/printk		//查看修改后的kernle log
0       6       1       7

注意:只能临时关闭,重启后重置,默认值修改见下文

修改kernel log默认值

以Android 10.0 qcom平台为例,修改如下: device/qcom/common/rootdir/etc/init.qcom.sh

case "$buildvariant" in
    "userdebug" | "eng")
        #set default loglevel to KERN_INFO
-       echo "6 6 1 7" > /proc/sys/kernel/printk
+       echo "0 6 0 7" > /proc/sys/kernel/printk
        ;;
    *)
        #set default loglevel to KERN_WARNING
        echo "4 4 1 4" > /proc/sys/kernel/printk
        ;;
esac

printk文件解读

该文件中4个数字,如“6 6 1 7”,根据日志记录消息的重要性/优先级(数值越小,优先级越高),定义将其发送到何处。 源码定义如下: kernel/msm-4.14/kernel/printk/printk.c

int console_printk[4] = {
	CONSOLE_LOGLEVEL_DEFAULT,	/* console_loglevel 控制台日志级别,优先级高于该值的消息将被打印至控制台*/
	MESSAGE_LOGLEVEL_DEFAULT,	/* default_message_loglevel 默认的消息日志级别,将用该优先级来打印没有优先级的消息*/
	CONSOLE_LOGLEVEL_MIN,		/* minimum_console_loglevel 最低的控制台日志级别,控制台日志级别可被设置的最小值(最高优先级)*/
	CONSOLE_LOGLEVEL_DEFAULT,	/* default_console_loglevel 默认的控制台日志级别,控制台日志级别的缺省值*/
};

kernel/msm-4.14/include/linux/kernel_level.h

#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 */
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
R3jekIqJDwNw