您的位置:首页 > 编程语言 > C语言/C++

C++ 简单的日志类

2016-05-04 19:23 411 查看
/*
简单的日志记录类. (日志而已,何必那么复杂!!!)
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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: