C++簡單日誌記錄方法

#define LOG_FILE_NAME  "Office.log"
const TWO_MEGA = 2097152;

static void WriteLog(CString strlog)
{
// strlog.Replace(" ","");
 if(strlog == "")
 {
  return;
 }
 char dir[MAX_PATH + 1] = {0};
 CString strfile;
 DWORD dwlen = GetCurrentDirectory(MAX_PATH,dir);
 dir[dwlen] = '//';
 strfile = dir;
 strfile += LOG_FILE_NAME;
 
 CFile flog;
 CFileException fe;
 try
 {
  BOOL bf = TRUE;
  bf = flog.Open(strfile, CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite | CFile::shareDenyWrite ,&fe);//| CFile::typeText
  if(!bf)
  {
   TCHAR szError[1024];
   fe.GetErrorMessage(szError, 1024);
   flog.Close();
  }
  DWORD dwSize = flog.GetLength();
  SYSTEMTIME  SysTime;
  GetLocalTime(&SysTime);

  if(dwSize >=  TWO_MEGA)
  {
   flog.Close();
   char szOldFileName[MAX_PATH];
   sprintf(szOldFileName, "%sDataBag%d%d%d%d%d%d.ini",
    dir, SysTime.wYear, SysTime.wMonth, SysTime.wDay,
    SysTime.wHour, SysTime.wMinute, SysTime.wSecond);
   CFile::Rename(strfile, szOldFileName);
   flog.Open(strfile,CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite | CFile::shareDenyWrite| CFile::typeText);
  }
  flog.SeekToEnd();
  strfile.Format("%d-%d-%d %d:%d:%d",SysTime.wYear, SysTime.wMonth, SysTime.wDay, SysTime.wHour, SysTime.wMinute, SysTime.wSecond);
  strfile += "    " + strlog;
  flog.Write(strfile.GetBuffer(0),strfile.GetLength());
  strlog.ReleaseBuffer(); 
  flog.Write("/r/n",2);
  flog.Close();
 }
 catch(...)
 {

 }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章