今天被打印信息的去除困扰了,想了想,如果靠一个一个的改动未免太繁琐。因此就仔细的看了下这部分的打印原理。当然下面只是简单的进行了知识罗列不过有需要的朋友可以随便看看。说不准会有些收获呢。

Include/linux/printk.h中有如下定义:

#defineKERN_EMERG

"<0>"

/* system is unusable

*/

#defineKERN_ALERT

"<1>"

/* action must be taken immediately

*/

#defineKERN_CRIT

"<2>"

/* critical conditions

*/

#defineKERN_ERR

"<3>"

/* error conditions

*/

#defineKERN_WARNING

"<4>"

/* warning conditions

*/

#defineKERN_NOTICE

"<5>"

/* normal but significant condition

*/

#defineKERN_INFO

"<6>"

/* informational

*/

#defineKERN_DEBUG

"<7>"

/* debug-level messages

*/

/*Use the default kernel loglevel */

#defineKERN_DEFAULT

"<d>"

/*

*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).

*/

#defineKERN_CONT

"<c>"

externint console_printk[];

#defineconsole_loglevel (console_printk[0])

#definedefault_message_loglevel (console_printk[1])

#defineminimum_console_loglevel (console_printk[2])

#definedefault_console_loglevel (console_printk[3])

这样定义了通常使用的prink函数调用时的参数。通过上面的定义可以清晰的看到系统默认的loglevel,包括日志级别和控制台级别。

/*printk's without a loglevel use this.. */

#defineDEFAULT_MESSAGE_LOGLEVEL CONFIG_DEFAULT_MESSAGE_LOGLEVEL

/*We show everything that is MORE important than this.. */

#defineMINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */

#defineDEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */

DECLARE_WAIT_QUEUE_HEAD(log_wait);

intconsole_printk[4] = {

DEFAULT_CONSOLE_LOGLEVEL,

/* console_loglevel */

DEFAULT_MESSAGE_LOGLEVEL,

/* default_message_loglevel */

MINIMUM_CONSOLE_LOGLEVEL,

/* minimum_console_loglevel */

DEFAULT_CONSOLE_LOGLEVEL,

/* default_console_loglevel */

};

通过上面的了解,可以知道当linux内核启动之后,能够看到那些级别的log信息。当然很多情况下,添加打印信息都是为了方便调试,当系统启动之后,很有可能我们变得很讨厌添加的log信息,或者想看到某个级别的信息。此时如果重新编译kernel然后烧写就会很浪费时间。这种情况下,应该最好能及时的修改日志级别看到真正想要看到的log 信息。

既然有这样的需求,那么linux能否提供呢?

答案当然不出意料,在linux中的特殊的文件proc中,就有这样可以进行操作的文件。

使用如下命令查看现在的printk的情况:

#cat /proc/sys/kernel/printk

7 4 1 7

对照上面的信息,就知道现在console中的级别为7,为了屏蔽部分信息,可以通过如下命令

#echo 4 > /proc/sys/kernel/printk

LOGE\LOGD\LOGI等宏定义一般都是某个公司自己内部定义使用的打印函数,一般定义在board端的一个log-private.h文件中 ,被log.h文件引用之后,被hardware.h文件引用。在驱动中的头文件如果包含了这个头文件,那么程序中就可以使用LOGI的打印宏定义。

转至:http://blog.csdn.net/codectq/article/details/24734269

如何屏蔽LOGD\LOGI等打印输出的更多相关文章

  1. Android源码——Logger日志系统

    Android的Logger日志系统是基于内核中的Logger日志驱动程序实现的. 日志保存在内核空间中 缓冲区保存日志   分类方法:日志的类型  +   日志的输出量   日志类型:   main ...

  2. 解读Android LOG机制的实现【转】

    转自:http://www.cnblogs.com/hoys/archive/2011/09/30/2196199.html http://armboard.taobao.com/ Android提供 ...

  3. Android Studio 的初次使用

    记录我第一次使用Android Studio时遇到的问题以及一些简单的笔记. 我所使用的是Android Studio 2.2版本 遇到的问题 创建一个Hello World!项目无疑是相当简单的,我 ...

  4. 做自己的Android ROM,屏蔽对framework中的系统APK的签名检查

    最近两天一直在尝试更新Android中的关键库以达到定制ROM的效果,中间比较曲折,记录下来供自己和大家参考. 因为我需要基于Android的原生代码做一定的修改,所以如果无法将我自己编译出的APK或 ...

  5. 扫二维码下载apk并统计被扫描次数(及微信屏蔽下载解决方案)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5395715.html 需求:想让用户扫描一个二维码就能下载APP,并统计被扫描次数. 两种实现方法: 1.一 ...

  6. Python写各大聊天系统的屏蔽脏话功能原理

    Python写各大聊天系统的屏蔽脏话功能原理 突然想到一个视频里面弹幕被和谐的一满屏的*号觉得很有趣,然后就想用python来试试写写看,结果还真玩出了点效果,思路是首先你得有一个脏话存放的仓库好到时 ...

  7. 萌新笔记——用KMP算法与Trie字典树实现屏蔽敏感词(UTF-8编码)

    前几天写好了字典,又刚好重温了KMP算法,恰逢遇到朋友吐槽最近被和谐的词越来越多了,于是突发奇想,想要自己实现一下敏感词屏蔽. 基本敏感词的屏蔽说起来很简单,只要把字符串中的敏感词替换成"* ...

  8. 记一次WinForm中屏蔽空格键对按钮的作用

    事件的起因是在做一个项目功能时,添加快捷键关闭声音,这个键最终选择了空格键,但是当按下空格键时,会把窗体中获取焦点的控件(比如按钮,文本框等)的单击事件触发,所以要屏蔽这个现象. 开始使用各种方法,在 ...

  9. css屏蔽元素的鼠标事件pointer-events

    // 屏蔽点击 $('body').css('pointer-events', 'none'); //恢复默认 $('body').css('pointer-events', 'auto');   用 ...

随机推荐

  1. 使用libuv实现生产者和消费者模式

    生产者和消费者模式(Consumer + Producer model) 用于把耗时操作(生产线程),分配给一个或者多个额外线程执行(消费线程),从而提高生产线程的响应速度(并发能力) 定义 type ...

  2. iOS10.0 TabBar Bug(底部同时展示原生和自定义tabBar)-b

    在没有发布iOS10的时候,在任何模拟器测试下效果正常,更新iOS10后,测试出现BUG先放一张bug之前的效果图: 修改前出现的bug 在检查了所有问题之后,最后把问题定位在了原生系统tabBar底 ...

  3. 将Xml字符串转换成(DataTable || DataSet || XML)对象

    今天用到一个功能:就是把从数据库读出来的内容转换成XML字符串流格式,并输出给一个功能函数.在写的过程,为方便以后的使用,我对这一功能进行分装.该类的具体格式如下:XmlConvert类命名空间:Ni ...

  4. Careercup - Facebook面试题 - 4922014007558144

    2014-05-01 02:13 题目链接 原题: Design question: Say you have hacked in to a network and can deploy your b ...

  5. 自己的一些 Demo,源码链接

    1.指纹解锁(GitHub). 2.JS 与 OC 交互(GitHub). 3.模仿 HTML 下拉菜单(GitHub). 4.OC开发常用类目(GitHub).

  6. clion 帮助文档 EN

    下载时间 2015年10月 下载地址:http://pan.baidu.com/s/1E4fgE 备用地址:链接:http://pan.baidu.com/s/1bn6u5Wj 密码:icn4

  7. 3157: 国王奇遇记 & 3516: 国王奇遇记加强版 - BZOJ

    果然我数学不行啊,题解君: http://www.cnblogs.com/zhuohan123/p/3726933.html const h=; var fac,facinv,powm,s:..]of ...

  8. c#中获取服务器IP,客户端IP以及其它

    客户端ip:Request.ServerVariables.Get("Remote_Addr").ToString();客户端主机名:Request.ServerVariables ...

  9. $POST数组论证($GET || $COOKIE || $REQUEST 同理)

    我觉得还是有多个$_POST  如果只有一个$_POST,那么,多个人[同时]提交的话就不好处理  或者一个$_POST 时间限制(如同时钟周期)处理(不可能,不然响应没这么快) 或者 一个$_POS ...

  10. 时间序列数据库武斗大会之 KairosDB 篇

    [编者按] 刘斌,OneAPM后端研发工程师,拥有10多年编程经验,参与过大型金融.通信以及Android手机操作系的开发,熟悉Linux及后台开发技术.曾参与翻译过<第一本Docker书> ...