读书人

写日志怎样先缓存在内存然后一次写

发布时间: 2012-01-15 22:57:48 作者: rapoo

写日志,怎样先缓存在内存,然后一次写文件到硬盘?
偶现在写日志时,直接调用偶写的一个函数WriteLog,
WriteLog 就是直接打开文件,在末尾追加,然后关闭。
有好几个线程,基本上一直都在写,这样写效率比较低。
偶想改成写到内存文件中,然后到一定大小或定时写到硬盘上,请各位老大赐教,谢谢。

[解决办法]
内存映射文件
[解决办法]
内存里面维护一个buffer, 写日志的时候写进buffer, 移动buffer指针
写入的时候如果发现buffer指针将超过上限就打开文件写进去,清零指针重头写入buffer
多线程的时候注意用临界区保护一下

-------------------------------------------------------
广告:VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711
[解决办法]
写日志还是打开文件、追加、关闭文件的好。
因为日志追踪了程序的运行状态,当程序崩溃时,日志就很有作用了。
[解决办法]
还是建议文本追加方式好,同意上楼说法
[解决办法]
注意要用互斥。
[解决办法]
createmappingfile
[解决办法]
可以专门有一个线程进行log的输出,其他的线程把log信息都往这个log线程发送,这个不会因为要等log输出,而导致本线程的停滞。
[解决办法]
定义一个CString m_str, str;
有什么就写上: m_str = m_str + str;
最后把m_str写到文件里
[解决办法]
同意五岭散人

读书人网 >VC/MFC

热点推荐