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

//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 >
 
class CLog
{
          CLog ()
         {      
                    pf new ofstream  ( "inmstrace.log" ios ::app);
         }
 
         static  CLog _instance ;
          ofstream pf ;
public:
         ~ CLog ()
         {
                   _instance =0;                  
                   pf -> close ();
         }
 
         static  CLog GetPtr ()
         {
                  if(! _instance )
                             _instance = new CLog ;
                  return( _instance );
         }
 
         static  CLog GetObj ()
         {
                  if(! _instance )
                             _instance = new CLog ;
                  return(* _instance );
         }
 
         template< class T > inline  CLog Write ( T val )
         {
                   (* pf ) <<  val  ;
                   pf -> flush ();
                   return *this;
         }
        
         template< class T > inline  CLog tmWrite ( T val )
         {
         char strBuf [50];       
         time_t ltime ;
         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_mday today -> tm_hour ,
             today -> tm_min today -> tm_sec );
       
                   (* pf ) <<  strBuf  <<  val  <<  "/r/n" ;
                   pf -> flush ();
                   return *this;
         }
 
         template< class T > inline  CLog & operator<< ( T val )
         {
                   (* pf ) <<  val  ;
                   pf -> flush ();
                   return *this;
         }
 
};
 
#endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值