// Log.h
#ifndef LOG_H
#define LOG_H
#include <fstream>
#include <string>
#include <sstream>
#include <ctime>
using namespace std;
/**//**
* 用于输出log文件的类.
*/
class Log
...{
public:
Log();
~Log();
bool Open(string sFileName);
void Close();
bool CommonLogInit(); //打开默认的log 文件
void Enable();
void Disable();
string GetTimeStr();
template <typename T> void LogOut(const T& value)
...{
if (m_bEnabled)
...{
m_tOLogFile << value;
}
}
template <typename T> void LogOutLn(const T& value)
...{
if (m_bEnabled)
...{
m_tOLogFile << value << endl;
}
}
void LogOutLn()
...{
if (m_bEnabled)
...{
m_tOLogFile << endl;
}
}
template <typename T> Log& operator<<(const T& value)
...{
if (m_bEnabled)
...{
m_tOLogFile << value;
}
return (*this);
}
Log& operator<<(ostream& (*_Pfn)(ostream&))
...{
if (m_bEnabled)
...{
(*_Pfn)(m_tOLogFile);
}
return (*this);
}
private:
template<typename> string ValueToStr(T value)
...{
ostringstream ost;
ost << value;
return ost.str();
}
private:
ofstream m_tOLogFile;
bool m_bEnabled;
};
#endif
//========================
//Log.cpp
#include "Log.h"
Log::Log()
:m_bEnabled(true)
...{
}
Log::~Log()
...{
}
bool Log::Open(string sFileName)
...{
m_tOLogFile.open(sFileName.c_str(), ios_base::out | ios_base::app);
if( !m_tOLogFile )
...{
return false;
}
return true;
}
void Log::Close()
...{
if(m_tOLogFile.is_open())
...{
m_tOLogFile.close();
}
}
bool Log::CommonLogInit()
...{
time_t tNowTime;
time(&tNowTime);
tm* tLocalTime = localtime(&tNowTime);
//得到日期的字符串
string sDateStr = ValueToStr(tLocalTime->tm_year+1900) + "-" +
ValueToStr(tLocalTime->tm_mon+1) + "-" +
ValueToStr(tLocalTime->tm_mday);
return Open("MatgoLog_" + sDateStr + ".log");
}
void Log::Enable()
...{
m_bEnabled = true;
}
void Log::Disable()
...{
m_bEnabled = false;
}
//得到当前时间的字符串
string Log::GetTimeStr()
...{
time_t tNowTime;
time(&tNowTime);
tm* tLocalTime = localtime(&tNowTime);
//得到日期的字符串
string strDateTime = ValueToStr(tLocalTime->tm_year+1900) + "-" +
ValueToStr(tLocalTime->tm_mon+1) + "-" +
ValueToStr(tLocalTime->tm_mday) + " " +
ValueToStr(tLocalTime->tm_hour) + ":" +
ValueToStr(tLocalTime->tm_min) + ":" +
ValueToStr(tLocalTime->tm_sec) + " ";
return strDateTime;
}
//本Log类,用于一般简单的Log文本文件输出.
//test: main.cpp
#include "Log.h"
int main()
...{
Log mainLog;
mainLog.CommonLogInit();
mainLog << mainLog.GetTimeStr() << "测试Log类." << endl;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/aheroofeast/archive/2008/04/21/2313150.aspx
简单的log&spm=1001.2101.3001.5002&articleId=6414983&d=1&t=3&u=eb6409de8c7648f08eb810b428cacf6e)
98

被折叠的 条评论
为什么被折叠?



