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

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. Java 网络编程(转)

    一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...

  2. python学习小结6:模块

    模块:在Python中有一个概念叫做模块(module),简单地说,模块就是一个保存了Python代码的文件.          模块能定义函数,类和变量,模块里也能包含可执行的代码.         ...

  3. iOS 10 版本适配问题收集-b

    随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有错误,欢迎指出. 1.系统判断方法失效: 在你的项目中,当需要判断系统版本的话,不要使 ...

  4. JDBC 学习笔记(二)—— 大数据+存储过程+批处理+事务管理

    本文目录:       1.使用JDBC处理大数据        2.使用JDBC处理大文本        3.使用JDBC处理二进制数据        4.Oracle中大数据处理        5 ...

  5. JSON-JObject

    http://james.newtonking.com/json/help/index.html http://www.cnblogs.com/usharei/archive/2012/04/24/2 ...

  6. html+css学习笔记 4[定位]

    如何让图1中的div2移动到如图2上的位置: 思路:哪些css命令能够影响盒子显示的位置呢? relative相对定位/定位偏移量 position:relative;  相对定位         a ...

  7. Why am I able to change the contents of const char *ptr?

    http://stackoverflow.com/questions/3228664/why-am-i-able-to-change-the-contents-of-const-char-ptr I ...

  8. Linux 终端访问 FTP 及 上传下载 文件

    今天同事问我一个问题,在Linux 下访问FTP,并将文件上传上去. 我之前一直是用WinSCP工具的. 先将文件从linux copy到windows下,然后在传到ftp上.google 一下. 方 ...

  9. jquery加入收藏代码

    <html> <head> <script type="text/javascript" src="jquery-1.9.1.js" ...

  10. linux源代码阅读笔记 八进制

    c语言中,众所周知,以0x开头的数是16进制数.例如 0x8FFF 然而较少使用的是八进制数.它以0开头.例如 01234