在构建一个库的时候,通常会写专门的log输出函数,下面介绍一个简单的实现。根据不同的需求,需要对日志的输出作一个级别限定,便于查阅及跟踪流程。以下是对级别的设置:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
该部分参考内核的级别设定,不同的是数值越低其信息的重要程度越低。
具体的日志输出,我们采用了宏定义的方式,因为考虑到要输出__FUNCTION__
等信息,其具体的实现如下所示:
1 2 3 4 5 6 7 8 9 |
|
每个级别输出的宏定义如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
初始化函数,用于设置输出文件的名称和输出级别的设定:如果log_file
设置成NULL
的话,则直接将信息打印到stderr
;level
的值设置的越小,它输出的信息越多:
1
|
|
释放分配的资源,如果调用了rb_log_init
就必须调用以下的接口:
1
|
|
检测是否要打印信息:
1
|
|
日志输出:
1
|
|
当然我们也可以直接调用RB_DEBUG
等接口,这样的话,log信息直接输出到stderr
。具体的代码及测试用例,请参考这里。