对轻量级C++日志类[转]

本文介绍了一个名为CLog的日志系统实现细节。该系统通过单例模式管理日志文件,支持基本的日志记录功能及带时间戳的日志输出。此外,通过预处理指令实现了在发布版本中关闭日志输出的功能。
//log.h
//hujinshan@2004.1.3 Airforce Engineering University
/*
//CLog* CLog::_instance = NULL;
 
CLog::GetObj().Write( "******* 初始化完成 *******" );
CLog::GetObj().tmWrite( "******* 开始渲染No1. *******" );
CLog::GetObj();
 
 Clog文件中有 #define CLog /##/ 的语句,
 这是为了使日志在release版无效,
 使用单行注释,所以如果调用时如果要换行,
 请务必在换行最后加上 / 符号,
 
*/
 
/*#ifndef _DEBUG
#define CLog /##/
#define _CLOG_H
#endif*/
 
#ifndef _CLOG_H
#define _CLOG_H
 
#include <fstream>
#include <ctime>
 
classCLog
{
         CLog()
         {      
                   pfnewofstream ("inmstrace.log"ios::app);
         }
 
         static CLog_instance;
         ofstreampf;
public:
         ~CLog()
         {
                  _instance=0;                  
                  pf->close();
         }
 
         static CLogGetPtr()
         {
                  if(!_instance)
                            _instance=newCLog;
                  return(_instance);
         }
 
         static CLogGetObj()
         {
                  if(!_instance)
                            _instance=newCLog;
                  return(*_instance);
         }
 
         template<classT> inline CLogWrite(Tval)
         {
                   (*pf) << val ;
                  pf->flush();
                   return *this;
         }
        
         template<classT> inline CLogtmWrite(Tval)
         {
        charstrBuf[50];       
        time_tltime;
        time( &ltime );
        struct tm *today = localtime( &ltime );
        sprintf(strBuf"%4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d ",
            today->tm_year+1900, today->tm_mon+1, today->tm_mdaytoday->tm_hour,
            today->tm_mintoday->tm_sec);
       
                   (*pf) << strBuf << val << "/r/n";
                  pf->flush();
                   return *this;
         }
 
         template<classT> inline CLog& operator<< (Tval)
         {
                   (*pf) << val ;
                  pf->flush();
                   return *this;
         }
 
};
 
#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值