码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 简单的日志类

时间:2016-05-04 21:06:58      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:

/* 
简单的日志记录类. (日志而已,何必那么复杂!!!) 
W.J.Chang 2013.12.13 
 
说明:(EasyLog.h) 
1, 简单的单件实现(自动垃圾回收) 
2, 使用方法:EasyLog::Inst()->Log("Run..."); 
3, 日志记录结果:Run...    [2013.12.13 16:38:42 Friday] 
*/  
#pragma once  
#ifndef EASY_LOG_H_8080  
#define EASY_LOG_H_8080  
#include <memory>  
#include <ctime>  
#include <iostream>  
#include <fstream>  
class EasyLog  
{  
public:  
    static EasyLog * Inst(){  
        if (0 == _instance.get()){  
            _instance.reset(new EasyLog);  
        }  
        return _instance.get();  
    }  
  
    void Log(std::string msg); // 写日志的方法  
private:  
    EasyLog(void){}  
    virtual ~EasyLog(void){}  
    friend class std::auto_ptr<EasyLog>;  
    static std::auto_ptr<EasyLog> _instance;  
};  
  
std::auto_ptr<EasyLog> EasyLog::_instance;  
  
void EasyLog::Log(std::string loginfo) {  
    std::ofstream ofs;  
    time_t t = time(0);  
    char tmp[64];  
    strftime(tmp, sizeof(tmp), "\t[%Y.%m.%d %X %A]", localtime(&t));  
    ofs.open("EasyLog.log", std::ofstream::app);  
    ofs.write(loginfo.c_str(), loginfo.size());  
    ofs << tmp << \n;  
    ofs.close();  
}  
#endif  

用法如下:

#include "EasyLog.h"

int main()
{ EasyLog::Inst()
->Log("Run..."); }

不只是main函数中,任何地方只要include头文件就可以用。

主要是辅助调试,特别是写dll程序的时候比较实用。可以加个宏控制。在发布的时候关掉日志功能。

#include "EasyLog.h"  
  
#define EASYLOG 1  
  
int main(){  
#if EASYLOG  
    EasyLog::Inst()->Log("Run...");  
#endif  
}  

 

C++ 简单的日志类

标签:

原文地址:http://www.cnblogs.com/DswCnblog/p/5459539.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!