简化版 glog 接口实现

glog 是有用的日志工具,接口简单方便。最简单的调用方式如下:

LOG(INFO) << "Found " << num_cookies << " cookies";

但有些时候,因为种种原因,可能没法直接使用 glog 库(有兼容过时代码的原因,也有跨平台性的原因)。这时,可以写个简单的 adapter 模式来实现同样的接口。

glog 主要的接口其实非常简单,值得借鉴的是实现细节中的几个巧妙之处。
其一是直接利用 std::ostream 来实现流的插入操作(如下的 LogMessage::stream)。其二是利用对象的析构函数来输出日志(如下的 LogMessage::~LogMessage)。最后再定义一个 LOG 宏就完成了。

简单的实现代码如下:

回头想想,C++ 对程序员来说生产率还真不怎么高,特别是需要考虑跨平台性的时候,连这么基本的轮子都要重造个小半,更别提编译环境的麻烦了。

Advertisements
This entry was posted in Computer and Internet, Programming and Algorithm and tagged , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s