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(...)
 {

 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值