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

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

2013-06-05 14:35 218 查看
项目业务需要实现用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;
}


但是目前遇到的问题是在切换日志的过程中,其他的线程还在写日志,这时候流对象已经关闭,会丢失部分日志,还有待解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: