对轻量级C++日志类的增强

对轻量级C++日志类的增强
这是网上找到的一个轻量级C++日志类的实现,主要应用了Singleton模式,我增加一个函数 tmWrite ,主要用来进行前面带时间的行输出。
 
 
//log.h
//hujinshan@2004.1.3 Airforce Engineering University
/*
//CLog* CLog::_instance = NULL;
 
CLog::GetObj().Write( "******* 初始化完成 *******" ) <<endl;
CLog::GetObj().tmWrite( "******* 开始渲染 No1. *******" ) <<endl ;
CLog::GetObj()<< "******* 注销钩子 *******" <<endl;
 
  Clog 文件中有 #define CLog /##/ 的语句,
  这是为了使日志在 release 版无效,
  使用单行注释,所以如果调用时如果要换行,
  请务必在换行最后加上 / 符号 ,
 
*/
 
/*#ifndef _DEBUG
#define CLog /##/
#define _CLOG_H
#endif*/
 
#ifndef _CLOG_H
#define _CLOG_H
#pragma once
 
#include < fstream . h >
#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
//end of file
转自:http://blog.csdn.net/stephenxu111/archive/2008/05/13/2442825.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值