zoukankan      html  css  js  c++  java
  • 对轻量级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>
     
    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
  • 相关阅读:
    【分治法】线性时间选择(转)
    【分治法】最接近点对问题(转)
    概率DP入门总结 16题(转)
    动态规划初探及什么是无后效性? (转)
    第15章DP(转)
    整数快速乘法/快速幂+矩阵快速幂+Strassen算法 (转)
    矩阵乘法的理解(转)
    算法导论第4章习题与思考题(转)
    Transaction Script模式
    注册服务
  • 原文地址:https://www.cnblogs.com/rooney/p/2595432.html
Copyright © 2011-2022 走看看