64,282
社区成员
发帖
与我相关
我的任务
分享
class logger: public fstream
{
public:
logger ()
{
open("logfile",ios::app|ios::out);
}
~logger ()
{
close();
}
}
logger log_; //全局对象
//调用
log_ << "log something here " << endl;
#include <fstream>
#include <string>
using namespace std;
class logger
{
public:
logger ()
{
m_LogFile.open("logfile.txt",ios::app|ios::out);
}
~logger ()
{
m_LogFile.close();
}
template<class T>
friend logger& operator<<(logger&, T obj);
private:
fstream m_LogFile;
};
template <class T>
logger& operator<< (logger& log, T obj)
{
log.m_LogFile << "time now : " << obj << endl;
return log;
}
/*
logger& operator << (logger& log, const char* pstr)
{
log.m_LogFile << "time now : " << pstr << endl;
return log;
}
*/
logger log_; //全局对象
int main()
{
//调用
log_ << "log something here ";
return 0;
}
class log_me
{
public:
log_me()
{
buf.open("log.test",ios::app|ios::out);
}
~log_me()
{
buf.close();
}
template< class type> log_me & operator<<( type val)
{
buf << val ;
return *this;
}
void operator() (const char* format, ...)
{
if(!LOG_DEBUG)
return;
FILE* logfile = fopen("log.test", "a");
char time_[32];
get_time(time_);
fprintf(logfile, "[%s]\t", time_);
va_list ap;
va_start(ap, format);
vfprintf(logfile, format, ap);
va_end(ap);
fclose(logfile);
}
log_me& operator() ()
{
char time_[32];
get_time(time_);
buf << "[" << time_ << "]\t";
return *this;
}
private:
void get_time(char* time_)
{
time_t nCurrTime;
struct tm stCurrTime;
::time(&nCurrTime);
::localtime_r(&nCurrTime, &stCurrTime);
::sprintf(time_, "%d%02d%02d %02d:%02d:%02d",
stCurrTime.tm_year+1900, stCurrTime.tm_mon+1, stCurrTime.tm_mday,
stCurrTime.tm_hour, stCurrTime.tm_min, stCurrTime.tm_sec);
}
fstream buf;
};
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
class logger
{
private:
string _data;
string _time;
public:
logger (string data)
{
_data = data;
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
_time = asctime (timeinfo);
_time[_time.size()-1] = ' ';
}
friend ostream& operator <<(ostream& os, logger* log)
{
os << "[" << log->_time << "]:" << log->_data;
return os;
}
~logger ()
{
}
};
int _tmain(int argc, _TCHAR* argv[])
{
cout<<new logger("test")<<endl;
system("pause");
return 0;
}