C++按日期写日志文件,每天单独一个日志文件

来源:互联网 发布:淘宝羊绒布料店哪家好 编辑:程序博客网 时间:2024/05/06 17:44

项目业务需要实现用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 1900char 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;}


但是目前遇到的问题是在切换日志的过程中,其他的线程还在写日志,这时候流对象已经关闭,会丢失部分日志,还有待解决

原创粉丝点击