在构建一个库的时候,通常会写专门的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。具体的代码及测试用例,请参考这里。