LogFile.cpp
上传用户:qdlutongda
上传日期:2007-01-14
资源大小:133k
文件大小:3k
源码类别:

Email客户端

开发平台:

Visual C++

  1. // LogFile.cpp: implementation of the CLogFile class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "LogFile.h"
  6. #ifdef _DEBUG
  7. #undef THIS_FILE
  8. static char THIS_FILE[]=__FILE__;
  9. #define new DEBUG_NEW
  10. #endif
  11. //////////////////////////////////////////////////////////////////////
  12. // Construction/Destruction
  13. //////////////////////////////////////////////////////////////////////
  14. //extern CCriticalSection m_CritSection;
  15. //extern CSingleLock m_SingleLock(&m_CritSection);
  16. CLogFile::CLogFile()
  17. {
  18. m_bWriteLog = TRUE;
  19. m_strLogFilePath=_T("");
  20. }
  21. CLogFile::~CLogFile()
  22. {
  23. }
  24. void CLogFile::SetLogFilePath(CString strLogPath)
  25. {
  26. if(strLogPath.Right(1) != '\')
  27. m_strLogFilePath = strLogPath + _T("\");
  28. else
  29. m_strLogFilePath = strLogPath;
  30. m_strLogFilePath = m_strLogFilePath + "log";
  31. CreateDirectory(m_strLogFilePath, NULL);
  32. }
  33. void CLogFile::WriteLog(CString strALine_)
  34. {
  35. if(m_strLogFilePath == "")
  36. return ;
  37. if (this->m_bWriteLog == FALSE)
  38. return;
  39. CStdioFile fileLog;
  40. CString strFilename=_T("");
  41. GetLogDateFileName(strFilename);
  42. //get current time
  43.     time_t  t;
  44.     struct tm   *date;
  45.     t = time(NULL);
  46.     date = localtime(&t);
  47. CString strTime;
  48. strTime.Format("%d-%d-%d %d:%d:%d", (date->tm_year+1900), (date->tm_mon+1),
  49. date->tm_mday, date->tm_hour, date->tm_min, date->tm_sec);
  50. if(fileLog.Open(strFilename,CFile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncate|
  51.  CFile::shareDenyNone))
  52. {
  53. TRY{
  54. fileLog.SeekToEnd();
  55. fileLog.WriteString(strTime + CString("t") + strALine_ + CString(_T("n")));
  56. }CATCH( CFileException, e )
  57. {
  58. fileLog.Close();
  59. }
  60. END_CATCH
  61. fileLog.Close();
  62. }
  63. }
  64. void CLogFile::SetValueToRegistry(CString strWriteLog_,CString strLogFilePath_)
  65. {
  66. // m_pApp->WriteProfileString(_T("Log"),_T("WriteLog"),strWriteLog_);
  67. // m_pApp->WriteProfileString(_T("Log"),_T("LogFile"),strLogFilePath_);
  68. }
  69. bool CLogFile::GetValueFromRegistry()
  70. {
  71. /* CString strWriteLog;
  72. CString strLogFilePath;
  73. strWriteLog = m_pApp->GetProfileString(_T("Log"),_T("WriteLog"));
  74. if (strWriteLog.IsEmpty())
  75. return false;
  76. else
  77. {
  78. strWriteLog.MakeUpper();
  79. if (strWriteLog == _T("YES"))
  80. m_bWriteLog = TRUE;
  81. else
  82. m_bWriteLog = FALSE;
  83. }
  84. strLogFilePath = m_pApp->GetProfileString(_T("Log"),_T("LogFile"));
  85. if (! strLogFilePath.IsEmpty())
  86. m_strLogFilePath = strLogFilePath;
  87. return true;
  88. */
  89. return false;
  90. }
  91. /* 根据当前的日期和时间设定日志文件名YYYY:MM:DD HH:MM:SS */
  92. void CLogFile::GetLogDateFileName(CString& str)
  93. {
  94.     time_t  t;
  95.     struct tm   *date;
  96.     t = time(NULL);
  97.     date = localtime(&t);
  98. str.Format("%s\%d%02d%02d.txt", m_strLogFilePath,(1900+date->tm_year), date->tm_mon+1,date->tm_mday);
  99.     return;
  100. }