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,并为它实现Logtrait。这里当然就是直接用kprintln格式化打印一句话就好了(见log()方法)。
| 1 |  | 
2.1. 配置日志显示级别
当然logger还有一个重要功能是配置日志的显示级别,如下函数,在logger初始化的时候调用,根据环境变量是否设置了VERBOSE_BUILD环境变量,配置显示级别:
| 1 |  | 
2.2. 结果
不开启trace情况下的输出:
| 1 |  | 
开启verbose之后,除了上面显示的还有:
| 1 |  |