内核通过 printk() 输出的信息具有日志级别,日志级别是通过在 printk() 输出的字符串前加一个带尖括号的整数来控制的,如 printk("<6>Hello, world!/n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。

#define KERN_EMERG    "<0>"    /* system is unusable */
#define KERN_ALERT    "<1>"    /* action must be taken immediately */
#define KERN_CRIT     "<2>"    /* critical conditions */
#define KERN_ERR      "<3>"    /* error conditions */
#define KERN_WARNING  "<4>"    /* warning conditions */
#define KERN_NOTICE   "<5>"    /* normal but significant */
#define KERN_INFO     "<6>"    /* informational */
#define KERN_DEBUG    "<7>"    /* debug-level messages */

所以 printk() 可以这样用:printk(KERN_INFO "Hello, world!/n");。

未指定日志级别的 printk() 采用的默认级别是 DEFAULT_MESSAGE_LOGLEVEL,这个宏在 kernel/printk.c 中被定义为整数 4,即对应KERN_WARNING。

在 /proc/sys/kernel/printk 会显示4个数值(可由 echo 修改),分别表示当前控制台日志级别、未明确指定日志级别的默认消息日志级别、最小(最高)允许设置的控制台日志级别、引导时默认的日志级别。当 printk() 中的消息日志级别小于当前控制台日志级别时,printk 的信息(要有/n符)就会在控制台上显示。但无论当前控制台日志级别是何值,通过 /proc/kmsg (或使用dmesg)总能查看。另外如果配置好并运行了 syslogd 或 klogd,没有在控制台上显示的 printk 的信息也会追加到 /var/log/messages.log 中。

char myname[] = "chinacodec/n";
printk(KERN_INFO "Hello, world %s!/n", myname);

printk 使用方法相关推荐

  1. Printk打印内核日志

    一.背景 Linux 内核中提供了内核日志打印的工具printk.它的使用方式C语言中的printf是类似的.接下来我们介绍一下printk的使用方式.本文以打印Binder中的日志为例,进行演示. ...

  2. linux内核编程笔记【原创】

    以下为本人学习笔记,如有转载请注明出处,谢谢 1. service用法 oneshot DEFINE_MUTEX(buzzer_mutex); mutex_lock(&buzzer_mutex ...

  3. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群

    作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...

  4. Java面试题大全2021版

    一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...

  5. linux 内核printk 打印信息查询方法

    方法1.直接在终端查询日志 cat /var/log/messages 方法2.直接在一个终端执行 cat /proc/kmsg 然后打开另一个终端,动态加载驱动,在上一个终端中就能看到驱动中prin ...

  6. printk在应用层的设置方式及读取内核打印信息的方法

    如果 printk 中没有加调试级别,则使用默认的调试级别.注意,调试级别和格式化字符串之间没有逗号.当前控制台的各打印级别可以通过下面的命令来查看. # cat /proc/sys/kernel/p ...

  7. printk打印不能显示到终端的解决方法

    printk与printf有个不同的地方,就是printk有打印级别 使用printk时,Linux内核根据日志级别,可能把消息打印到当前控制台上,这个控制台是一个字符设备.这些消息从终端输出的前提是 ...

  8. linux printk 时间戳,linux – kern.log中“00:00:00”时间戳的含义是什么?

    我正在寻找kern.log中特定问题的原因.有许多条目的00:00:00时间戳: Jun 11 00:00:00 mymachine kernel: [ 0.000000] Initializing ...

  9. Linux查看dmesg日志,Linux中的Printk与dmesg功能

    要将linux内核的带级别控制的printk内容打印出来,在命令行输入 dmesg -n 8 就将所有级别的信息都打印出来. Linux命令:dmesg 功能说明:显示开机信息. 语 法:dmesg ...

最新文章

  1. sae python连接mysql_SAE Tornado 应用连接并使用 Mysql
  2. spring中Validation设计与实现
  3. 武汉锅检所检测机器人_嵊州市管道cctv机器人-检测服务,武汉天仪ty333,诚信承诺...
  4. 一次性配置VS2015属性的方法,新工程无需重新配置
  5. IT行业分析之企业信息化技术
  6. 无服务器架构 - 从使用场景分析其6大特性
  7. 在Outlook 2007中查看您的Google日历
  8. 说说mysql_说说MySQL权限 - andyqian的个人空间 - OSCHINA - 中文开源技术交流社区
  9. JavaScript中的原型继承原理
  10. 字符串的最长不重复字串
  11. 苏宁易购上半年营收936.06亿元,零售云加盟店新开1381家
  12. Linux命令:find命令
  13. 如何使用Wondershare UniConverter应用效果并调整音量
  14. matlab lu分解求线性方程组_线性代数10——矩阵的LU分解
  15. WIFI抓包实战篇——使用Kali 同时抓取多个智能家居数据包
  16. 【Python游戏】Python各大游戏合集:超级玛丽、天天酷跑、我的世界、魔塔、雷霆战机 | 附带源码
  17. 平行实境游戏设计——《家务战争》初稿
  18. TWS耳机供应链,看看背后都有谁?
  19. 【BZOJ】3993: [SDOI2015]星际战争
  20. Jmeter-添加PerfMon (Servers Performance Monitoring),报错解决办法

热门文章

  1. 2022年,或许是未来10年经济最好的一年,2022年你毕业了吗?毕业后是怎么计划的?
  2. java的actionlistener_Java:ActionListener接口
  3. 斯蒂芬·沃尔夫勒姆:宇宙的本质是计算
  4. 基于微信小程序的旅游社微信小程序
  5. 读书笔记--Fedex联邦快递,使命必达的力量
  6. 手机wifi延迟测试软件,如何测试无线投屏延时值?同屏延时怎么测? 四画面延时多少?同屏延时 传屏器延时 电脑投屏...
  7. 注意了!谷歌搜索新规定,对只有PC版本的网页将不再收录
  8. 计算机房设备搬迁协议,机房设备搬迁服务合同.doc
  9. 代码太长看不懂怎么办
  10. 【大局观】 NO.4 “加速时代”中怎样成为一个全球化人才?