写日志,怎样先缓存在内存,然后一次写文件到硬盘?

vcnewer 2007-06-14 09:57:07
偶现在写日志时,直接调用偶写的一个函数WriteLog,
WriteLog 就是直接打开文件,在末尾追加,然后关闭。
有好几个线程,基本上一直都在写,这样写效率比较低。
偶想改成写到内存文件中,然后到一定大小或定时写到硬盘上,请各位老大赐教,谢谢。
...全文
470 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfenj 2007-06-14
  • 打赏
  • 举报
回复
createmappingfile
fbmsf 2007-06-14
  • 打赏
  • 举报
回复
注意要用互斥。
abcpanpeng 2007-06-14
  • 打赏
  • 举报
回复
还是建议文本追加方式好,同意上楼说法
ouyh12345 2007-06-14
  • 打赏
  • 举报
回复
写日志还是打开文件、追加、关闭文件的好。
因为日志追踪了程序的运行状态,当程序崩溃时,日志就很有作用了。
fantiyu 2007-06-14
  • 打赏
  • 举报
回复
内存里面维护一个buffer, 写日志的时候写进buffer, 移动buffer指针
写入的时候如果发现buffer指针将超过上限就打开文件写进去,清零指针重头写入buffer
多线程的时候注意用临界区保护一下

-------------------------------------------------------
广告:VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711
  • 打赏
  • 举报
回复
CreateFile
CreateFileMapping
MapViewOfFile
  • 打赏
  • 举报
回复
内存映射文件
qiaotengda 2007-06-14
  • 打赏
  • 举报
回复
同意五岭散人
tiger波波 2007-06-14
  • 打赏
  • 举报
回复
定义一个CString m_str, str;
有什么就写上: m_str = m_str + str;
最后把m_str写到文件里
kantonwang2007 2007-06-14
  • 打赏
  • 举报
回复
可以专门有一个线程进行log的输出,其他的线程把log信息都往这个log线程发送,这个不会因为要等log输出,而导致本线程的停滞。

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧