开发一个日志类比较困难,因为std::basic_stream(buf)内部机理很复杂。这一文章演示了如何通过basic_message_handler_log类很方便地建立一个日志类。
使用std::basic_ostream类来建立自己的日志类,这一方法没有提供任何的控制符号(如<<)。即使想把一些控制符号加载到类中,比如,如果你想把类的对象传递到std::basic_ostream的函数,只有基类的控制符号可以使用。唯一可以控制的是当程序流溢出的时候。这一方法的优点是它效率比较高。如果程序流溢出,则使用std::endl,如下所示:
为了很方便地建立一个日志类,可以:
这里提供了使用message_handler_log和 wmessage_handler_log的范例。