c++中log的设计

兵马未动,粮草先行

 在进行工程构建前,最先需要考虑的就是日志系统,用于程序调试。
 目前,已经有很多开源库可供使用[1]。其中比较出名的是glog[2],谷歌出品的。我偶尔也写点程序,之前看到caffee中的日志模块,我就把它拿了出来[3],以备使用。我最近在写程序,恰好就把摘出来的日志模块使用上了。但是我在调成程序的时候,就发现这类日志系统不是很方便,把程序中的所有信息均打印出来,找到有用的信息是很费劲的。
 因为我写的主要是网络仿真程序,跑在ns3上的,我觉得ns的日志模块就设计非不错,可以单独对每个源程序文件进行调试,只有被LogComponentEnable的模块才被允许输出日志信息。已经调试成功的程序,似乎就不用输出日志,而调试的程序,有不是所有的程序文件均含有bug。因此,ns的日志的设计模式,是值得学习和使用的。我把ns3的日志模块单独摘取了出来[4]。
 原理也很简单,就是在程序文件中定义了局部静态变量glog。
例如程序文件 hello.cc

#include "hello.h"
#include "ns3/log.h"
NS_LOG_COMPONENT_DEFINE("hello");
void Hello::Test(){
    NS_LOG_INFO("test function");
}

 NS_LOG_COMPONENT_DEFINE这一句就是为了定义glog。
在主程序中ns3::LogComponentEnable(“hello”,ns3::LOG_ALL);在调用Test函数时,才会有输出。
 完整代码[4]。这种日志实现方式,只供参考,不保证在多线程环境下无bug。
 最近实现了一个C语言版本的,代码连接[8].

[1] C/C++log日志库比较
[2] glog简单使用
[3] log from caffe
[4] ns3 log standalone
[5] NS3 日志使用
[6] C++实现log日志系统
[7] tonk 中的日志模块
[8] log for c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值