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; }
但是目前遇到的问题是在切换日志的过程中,其他的线程还在写日志,这时候流对象已经关闭,会丢失部分日志,还有待解决
相关文章推荐
- 请问:如何实现文件日志功能?要求每天换一个文件。文件名以日期区分
- CentOS Linux系统下apache日志文件设置(每天单独生成一个日志文
- CentOS Linux系统下apache日志文件设置(每天单独生成一个日志文件)
- log4 配置日期为滚动类型(每天产生一个日志文件)
- log4j每天产生一个日志文件
- crontab日志每天生成一个文件
- 随笔-tomcat的日志文件按日期每天生成
- Tomcat下使用Log4j,按日期每天存放,解决catalina.out日志文件过大问题
- log4j配置每天生成一个日志文件
- Android日志服务例子,将日志记录在文件中并每天生成一个日志文件
- log4j 写多个日志文件,按照日期每天都记
- 每天生成自动生成一个日志文件,文件名以每天的时间结尾
- CENTOS下PHP不能将其错误日志单独输出到一个文件的问题解决
- python输出日志到文件(每天一个日志)
- Log4j每天或每个月产生一个日志文件
- log4j属性文件 每天产生一个日志文件
- log4j-每天日志文件加日期后缀
- log4j属性文件 每天产生一个日志文件
- 1./app/logs/ 里面的日志只保留7天的(apache每天生成一个文件)
- log4j配置每天生成一个日志文件