使用std::ostream(nullptr)控制日志输出等级

日志需要按当前设置的级别来控制是否输出到文件或者控制台,这里做一个最简单示范:

随便设置日志级别:

// 切换输出的技巧
enum LogLevel
{
	LOGLEVEL_TRACE = 0,
	LOGLEVEL_DEBUG,
	LOGLEVEL_DETAIL,
	LOGLEVEL_INFO,
	LOGLEVEL_WARN,
	LOGLEVEL_ERROR,
	LOGLEVEL_FATAL,
	LOGLEVEL_OFF,
};

精心定义一个空的输出:

class nullstream : public std::ostream {
public:
	nullstream() : std::ostream(nullptr) {}  // results in rdbuf==0 and badbit==true
};

随意添加一些定义和宏:

static nullstream dummyStream;
static int level = LOGLEVEL_INFO;
#define EV_LOG(LEVEL) ((LEVEL < level) ? dummyStream : std::cout) << "file: " << __FILE__ << ", 行:"  << __LINE__ <<  ", 函数:" <<__FUNCTION__ << ",内容:"
#define EV_INFO  EV_LOG(LOGLEVEL_INFO)

歌词大意是:如果当前的输出级别小于阈值,就输出到空流,否则输出到默认的输出,并加添加文件,行,函数信息,

 

使用方法:

    string *str = new string[2];
	int n = sizeof(string *);
	int t = sizeof(str);
	int m = sizeof(char);

	//std::cout << n << endl;

	//EV_INFO << "sizeof(string *)" << n << endl;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值