📄 xmlerrorhandler.cpp
字号:
// XmlErrorHandler.cpp: implementation of the CXmlErrorHandler class.
//
//////////////////////////////////////////////////////////////////////
#include "Stdafx.h"
#include "XmlErrorHandler.h"
#include "PreInclude.h"
#include <ctime>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CXmlErrorHandler::CXmlErrorHandler()
{
//初始化错误日志文件名及错误日志文件名的前缀
m_strErrorLogFile = "";
m_strFilePrefix = "Default";
}
CXmlErrorHandler::~CXmlErrorHandler()
{
if (m_ofErrorLog.is_open())
{
m_ofErrorLog.close();
}
}
/////////////////////////////////////////////////////////////////////////
//函数名称:BeginErrorLog
//函数功能:-------------准备记录错误日志-----------------------------------
//入口参数:无
//出口参数:无
//返回值:int--------------STATUS_OK表示操作成功,其他表示操作出现问题
//开发人员:杨军
//开发日期:2004-4-18
//修改人员:
//修改日期:
/////////////////////////////////////////////////////////////////////////
int CXmlErrorHandler::BeginErrorLog()
{
#ifdef XML_LOG_DEBUG_DEF
//--------------先生成一个错误日志文件名------------------------------
//生成错误日志文件名的规则是:
//文件名前缀_年月日_时_分_秒.xml
time_t timeNow;
tm * pTmDetailNow;
char szTemp[10];
tzset();
time(&timeNow);
pTmDetailNow = localtime(&timeNow);
if (NULL == pTmDetailNow)
{
m_strErrorLogFile = m_strFilePrefix + "_NoTime.xml";
}
else
{
m_strErrorLogFile = m_strFilePrefix;
sprintf(szTemp, "%d", pTmDetailNow->tm_year + 1900);
m_strErrorLogFile += szTemp;
sprintf(szTemp, "%d", pTmDetailNow->tm_mon);
m_strErrorLogFile += szTemp;
sprintf(szTemp, "%d", pTmDetailNow->tm_mday);
m_strErrorLogFile += szTemp;
sprintf(szTemp, "_%d_", pTmDetailNow->tm_hour);
m_strErrorLogFile += szTemp;
sprintf(szTemp, "%d_", pTmDetailNow->tm_min);
m_strErrorLogFile += szTemp;
sprintf(szTemp, "%d.xml", pTmDetailNow->tm_sec);
m_strErrorLogFile += szTemp;
}
//----------------创建指定名称的错误日志文件------------------------------
try
{
if (m_ofErrorLog.is_open())
{
m_ofErrorLog.close();
}
m_ofErrorLog.open(m_strErrorLogFile.c_str(), ios::out | ios::trunc);
//写入起始信息
m_ofErrorLog << "<Errors>" << endl;
}
catch (...)
{
cout << "some error occur during file I/O operation" << endl;
}
return STATUS_OK;
#endif
return STATUS_OK;
}
/////////////////////////////////////////////////////////////////////////
//函数名称:EndErrorLog
//函数功能:-------------结束错误日志的记录---------------------------------
//入口参数:无
//出口参数:无
//返回值:int--------------STATUS_OK表示操作成功,其他表示操作出现问题
//开发人员:杨军
//开发日期:2004-4-18
//修改人员:
//修改日期:
/////////////////////////////////////////////////////////////////////////
int CXmlErrorHandler::EndErrorLog()
{
#ifdef XML_LOG_DEBUG_DEF
try
{
if (m_ofErrorLog.is_open())
{
m_ofErrorLog << "</Errors>" << endl;
m_ofErrorLog.close();
return STATUS_OK;
}
else
{
return STATUS_FAILED;
}
}
catch(...)
{
cout << "some error occur during file I/O operation" << endl;
if (m_ofErrorLog.is_open())
{
m_ofErrorLog.close();
}
return STATUS_FAILED;
}
#endif
return STATUS_OK;
}
/////////////////////////////////////////////////////////////////////////
//函数名称:WriteErrorMessage
//函数功能:-------------写入指定的错误信息到错误日志中----------------------
//入口参数:const char * argMsg------------------将被写入错误日志的错误信息
//出口参数:无
//返回值:int--------------STATUS_OK表示操作成功,其他表示操作出现问题
//开发人员:杨军
//开发日期:2004-4-18
//修改人员:
//修改日期:
/////////////////////////////////////////////////////////////////////////
int CXmlErrorHandler::WriteErrorMessage(const char * argMsg)
{
#ifdef XML_LOG_DEBUG_DEF
time_t timeNow;
try
{
if (m_ofErrorLog.is_open())
{
time(&timeNow);
m_ofErrorLog << "\t" << "<Message>" << endl;
m_ofErrorLog << "\t\t" << "<Time>" << endl;
m_ofErrorLog << "\t\t\t" << ctime(&timeNow);
m_ofErrorLog << "\t\t" << "</Time>" << endl;
m_ofErrorLog << "\t\t" << "<Message>" << endl;
m_ofErrorLog << "\t\t\t" << argMsg << endl;
m_ofErrorLog << "\t\t" << "</Message>" << endl;
m_ofErrorLog << "\t" << "</Message>" << endl;
return STATUS_OK;
}
else
{
return STATUS_FAILED;
}
}
catch (...)
{
cout << "some error occur during file I/O operation" << endl;
return STATUS_FAILED;
}
#endif
return STATUS_OK;
}
//------------向用户显示错误消息---------------------------------
void CXmlErrorHandler::ShowErrMsg(const char * argMsg)
{
#ifdef WINDOW_MODE
//::MessageBox(NULL, argMsg, "Error", MB_OK);
//AfxMessageBox(argMsg);
#else ifdef CONSOLE_MODE
cout << argMsg;
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -