最简单的基于VC的日志文件类库实现.docxVIP

最简单的基于VC的日志文件类库实现.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最简单的基于VC的日志文件类库实现

最简单的基于VC的日志文件类库实现日志文件应具备基本功能Log4j据说是最闻名的日志文件类库,有针对于C++或者.NET的移植版本。一直不明白日志文件有什么特殊之处,也没有研究其功能强大在何处。理想中的日志文件类库功能应该具备:一个中心、两项基本功能、三个补充要求!一个中心点:??? 使用简单就是使用的时候可以感觉日志功能是随插随用,不用在代码层次上做太多前期的步骤。两个基本功能:日志类型管理、日志文件管理??????? 日志类型管理包括:格式化输出、日期时间标记等。前者可以考虑为日志分类,后者带上时间标记便于跟踪调试分析。??????? 日志文件管理包括:日志文件的大小约定、按时间段整理等三点补充要求:多种类型信息输出、多个进程输出到同一个日志文件、多进程线程同时输出时互斥操作以下是根据在实际过程中的运用,封装一个简单的日志文件功能模块。麻雀虽小,但是却满足以上所有要求。其中,对于日志文件管理这块简单点约定输出到指定文件名。由于采用CString,因此仅适用于MFC!但是可以方便的改造为纯C|C++。//===============================================================// LOG::简单的日志工具// 日志功能包应该包括以下两块功能:// 1. 每个日志文本串// 目前日志文本串包括 [prefix][datetime][type][info...]// a.多个进程输出到同一个日志文件,可通过prefix来区分每个进程; 可以忽略// b.datetime可以用来测试时间// c.类型可以设定[error|warn|debug],// 由使用者任意使用,并不做明确标记; 也可以忽略// d.info,可以根据实际情况任意格式化输出,类似printf// 2. 日志文件// a. 可将日志串保存到文本,或者自己处理// b. 支持并发写操作// c. 日志文件的管理//===============================================================.h文件class LOG{public: LOG(); virtual ~LOG();public: //-日志文件- //----如果没有指定,则为exe所在路径下的log.log文件---- static CString GetLogFile(); static short SetLogFile(LPCTSTR strPath); static short ViewLogFile(); //-前缀- //----如果多个进程往同一个文件输出日志,可以为每个进程设置一个前缀---- //----前缀出现在日期时间之前---- static short SetPrefix(LPCTSTR strPrefix); //-日志信息- //-获取日志字符串,可以另外- static CString sOutV(LPCTSTR strType, LPCTSTR strFormat = NULL, va_list valist = NULL); static CString sOut0(LPCTSTR strType, LPCTSTR strFormat = NULL,...); static CString sOut ( LPCTSTR strFormat = NULL,...); //-将日志信息输出到文件- static short OutV(LPCTSTR strType, LPCTSTR strFormat = NULL, va_list valist = NULL); static short Out0(LPCTSTR strType, LPCTSTR strFormat = NULL,...); static short Out (LPCTSTR strFormat = NULL,...);protected: static CString s_strLogFile; static CString s_strLogPrefix; static HANDLE s_hWriteEvent;};.cpp文件// 得到可执行程序所在目录// BOOL bIncludeSep -- 是否包含最后的分隔符\CString GetExePath(BOOL bIncludeSep){ // 得到当前的文件名 CString strFileName; GetModuleFileName(AfxGetInstanceHandle(),strFileName.GetBuffer(_MAX_PATH)

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档