寫了個log類。但是越寫越覺得不對勁,越寫發現越需要擴充。。
最大的問題是發現封裝成類後反而彆扭- -主要應該還是自己功底不夠吧。
最後用C語言,InitLog(),WriteLog(),CloseLog(). 三個函數搞定。暫且滿足程式的需要,雖然CloseLog()這個函數也不是必須地,不過加上能讓跟蹤出的log資訊更完整吧。
//////////////////////////////////////////////////////////////////////////////////////////
//wde_log.h
//////////////////////////////////////////////////////////////////////////////////////////
#ifndef WDE_LOG_H
#define WDE_LOG_H
#include <windows.h>
#include <cstdio>
using namespace std;
#define LOGFILENAME “log.txt”
void OpenLog();
void GameLog(const char* p_Message, bool p_bNeedTime = true);
void CloseLog();
#endif
//////////////////////////////////////////////////////////////////////////////////////////
//wde_log.cpp
//////////////////////////////////////////////////////////////////////////////////////////
#include “wde_Log.h”
void OpenLog()
{
FILE *logfile;
logfile = fopen(LOGFILENAME, “w”);
if (!logfile)
{
MessageBox(NULL, “無法建立記錄檔,程式終止”, “ERROR”,MB_OK);
return;
}
fputs(”開啟應用程式記錄檔檔案/n”,logfile);
fputs(”———————————————————————-/n”,logfile);
}
void GameLog(const char* p_Message, bool p_bNeedTime /* = true */)
{
FILE *writelog;
writelog = fopen(LOGFILENAME, “a+”);
if (!writelog)
{
MessageBox(NULL,”無法寫入記錄檔,程式終止”, “ERROR”, MB_OK);
return;
}
static SYSTEMTIME CurrentTime;
GetLocalTime(&CurrentTime);
if (p_bNeedTime)
{
fprintf(writelog,”%2d/%2d/%4d “, CurrentTime.wMonth, CurrentTime.wDay, CurrentTime.wYear);
fprintf(writelog,”%2d:%2d:%2d “,CurrentTime.wHour, CurrentTime.wMinute, CurrentTime.wSecond);
}
fputs(p_Message, writelog);
}
void CloseLog()
{
FILE *closefile;
closefile = fopen(LOGFILENAME, “a+”);
if (!closefile)
{
MessageBox(NULL,”無法寫入記錄檔,程式終止”, “ERROR”, MB_OK);
return;
}
fputs(”———————————————————————-/n”,closefile);
fputs(”關閉應用程式記錄檔檔案/n”,closefile);
}
//////////////////////////////////////////////////////////////////////////////////////////