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

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


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

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值