SaveLog.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:4k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  FileName    :   SaveLog.cpp
  4. //  Version     :   1.0
  5. //  Creater     :   Cheng Bitao
  6. //  Date        :   2002-1-18 11:52:10
  7. //  Comment     :   interface of save log
  8. //
  9. //////////////////////////////////////////////////////////////////////////////////////
  10. #include "stdafx.h"
  11. #include "DataDefine.h"
  12. #include "SaveLog.h"
  13. #include "PublicFun.h"
  14. extern KPATH_TABLE g_PathTable;
  15. CString GetLogPathName()
  16. {
  17.     char szUserName[100]    = {0};
  18.     int nSize               = 100;
  19.     int nRetCode            = 0;
  20. CString sPathName       = (CString)g_PathTable.szUpdateDestPath;
  21. ASSERT(sPathName.Right(1) == "\");
  22.     /*nRetCode = GetUserName(szUserName, (unsigned long *)&nSize);
  23.     if (!nRetCode)
  24.         *szUserName = '';
  25.     sPathName += "LOGS";
  26.     MkDirEx(sPathName);
  27. sPathName = (CString)g_PathTable.szModulePath + "LOGS\" + (CString)szUserName + "Update.LOG";
  28.     */
  29.     sPathName += "Update.LOG";
  30. return sPathName;
  31. }
  32. CString GetCurTimeString(BOOL bYear)
  33. {
  34. CTime now = CTime::GetCurrentTime();
  35. CString sMes;
  36. if (bYear)
  37. {
  38. sMes.Format(
  39. "%04d-%02d-%02d %02d:%02d:%02d",
  40. now.GetYear(),
  41. now.GetMonth(),
  42. now.GetDay(),
  43. now.GetHour(),
  44. now.GetMinute(),
  45. now.GetSecond()
  46. );
  47. }
  48. else
  49. {
  50. sMes.Format(
  51. "%02d:%02d:%02d",
  52. now.GetHour(),
  53. now.GetMinute(),
  54. now.GetSecond()
  55. );
  56. }
  57. return sMes;
  58. }
  59. KSaveLog::KSaveLog()
  60. {
  61.     m_nLogSectionPos = 0;
  62.     m_sLog.Empty();
  63. m_bWriteLog = TRUE;
  64. }
  65. KSaveLog::~KSaveLog()
  66. {
  67.     WriteLogEnd();
  68.     m_nLogSectionPos = 0;
  69.     m_sLog.Empty();
  70. }
  71. BOOL KSaveLog::Init(BOOL bWrite)
  72. {
  73. m_bWriteLog = bWrite;
  74.     return WriteLogTitle();
  75. }
  76. BOOL KSaveLog::WriteLogTitle()
  77. {
  78. CString sPathName = GetLogPathName();
  79.     CFile file;
  80. if (file.Open(sPathName, CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite))
  81. {
  82.         int nLen = 0;
  83.         nLen = file.GetLength();
  84.         if (nLen > defLOG_FILE_MAX_SIZE)
  85.         {
  86.             CString sNewPathName;
  87.             sNewPathName = sPathName + ".old";
  88.             file.Close();
  89.             CopyFile(sPathName, sNewPathName, false);
  90.             DeleteFile(sPathName);
  91.             if (!file.Open(sPathName, CFile::modeCreate | CFile::modeWrite))
  92.                 return false;
  93.         }
  94. file.SeekToEnd();
  95. m_nLogSectionPos = file.GetPosition();
  96. CString sMes = "rn[---------";
  97. sMes += GetCurTimeString(TRUE);
  98. sMes += "---------]rn";
  99. file.Write(sMes, sMes.GetLength());
  100. file.Close();
  101. }
  102. else
  103. return FALSE;
  104. return TRUE;
  105. }
  106. BOOL KSaveLog::WriteLogString(CString sMes, int nTimeFlag)
  107. {
  108. if (!m_bWriteLog)
  109. return TRUE;
  110. CString sPathName = GetLogPathName();
  111. CFile file;
  112.     CString sContent = "";
  113.     if (nTimeFlag)
  114.     {
  115.         sContent = GetCurTimeString(FALSE);
  116. sContent += " " + sMes + "rn";
  117.     }
  118.     else 
  119.     {
  120.         sContent = sMes + "rn";
  121.     }
  122.     
  123.     m_sLog += sContent;
  124. if (file.Open(sPathName, CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite))
  125. {
  126. file.SeekToEnd();
  127. file.Write(sContent, sContent.GetLength());
  128. file.Close();
  129. }
  130. else
  131. return FALSE;
  132. return TRUE;
  133. }
  134. BOOL KSaveLog::WriteLogEnd()
  135. {
  136. return TRUE;
  137. }
  138. CString KSaveLog::GetCurLogString()
  139. {
  140. CString sPathName = GetLogPathName();
  141. CFile file;
  142. CString s = "";
  143. if (file.Open(sPathName, CFile::modeRead | CFile::shareDenyNone))
  144. {
  145. int nLen = file.GetLength() - m_nLogSectionPos;
  146. char *pBuf = new char [nLen + 1];
  147. ASSERT(pBuf != NULL);
  148. file.Seek(m_nLogSectionPos, CFile::begin);
  149. file.Read(pBuf, nLen);
  150. pBuf[nLen] = '';
  151. s = pBuf;
  152. KAV_DELETE_ARRAY(pBuf);
  153. file.Close();
  154. }
  155. return s;
  156. }