C++ 简单的日志类

/* 
简单的日志记录类. (日志而已,何必那么复杂!!!) 
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  
}

原文链接: https://www.cnblogs.com/DswCnblog/p/5459539.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/232869

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午3:39
下一篇 2023年2月13日 下午3:39

相关推荐