项目业务需要实现用C++最基本的流对象实现按照日期写日志文件
我的思路是单独开一个线程,监控系统的时间,当等到零点的时候关闭当前流和文件的关联,然后创建新的文件,继续写日志
代码如下:
DWORD WINAPI MonitorTime(PVOID pParam)
{
time_t sttime;
struct tm * tim;
while (1)
{
time(&sttime);
tim = localtime(&sttime); //本地时间
int sec = tim->tm_sec; // second (0-61, allows for leap seconds)
int min = tim->tm_min; // minute (0-59)
int hour = tim->tm_hour; // hour (0-23)
int mon = tim->tm_mon + 1; // month (0-11)
int mday = tim->tm_mday; // day of the month (1-31)
int year = tim->tm_year % 100; // years since 1900
char newfilename[256];
if (sec == 0 && min == 0 && hour == 0)
{
winLog.flush();
winLog.clear();
winLog.close();
sprintf(newfilename,"%04d-%02d-%02d-%02d-%02d-%02d.log",year,mon,mday,hour,min,sec);
string tmpStr = "Log\\";
winLog.openLog(tmpStr+newfilename, ios::app);
}
}
return 0;
}