Don’t Live with Broken Windows.
1. 日志级别和使用实例
日志级别如下,逐渐提升:
- Trace: 帮助debug内核的信息,但是通常过于冗长,一般情况下不显示
- 调度器switch日志
- IRQ中断日志
- Debug: 开发者关系的信息
- 页表地址
- Info: 内核用户关心的信息
- 系统中内存数量
- 内核初始化状态
- Warn: 表明一些非预期的错误情况
- 内存用尽
- 来自用户程序的未知异常
- Error: 表明内核正常执行情况下从不应该发生的情况
- 违反Debug断言
- 内核中发生的未知异常
2. 实现
首先要引入log crate,这个crate提供的是抽象的api,需要自己给出logger的实现。
1 |
|
对应提供了下面这些宏
trace!()
debug!()
info!()
warn!()
error!()
然后实现具体的logger,并为它实现Log
trait。这里当然就是直接用kprintln
格式化打印一句话就好了(见log()
方法)。
1 |
|
2.1. 配置日志显示级别
当然logger还有一个重要功能是配置日志的显示级别,如下函数,在logger初始化的时候调用,根据环境变量是否设置了VERBOSE_BUILD
环境变量,配置显示级别:
1 |
|
2.2. 结果
不开启trace情况下的输出:
1 |
|
开启verbose之后,除了上面显示的还有:
1 |
|