您的位置:首页 > 大数据 > 人工智能

动态调用 WebService (收藏转贴http://www.rainsts.net/article.asp?id=304)

2008-03-26 11:11 375 查看
#pragma once
#include <stdlib.h>

class CLogger
{
public:
CLogger(void);
CLogger(LPCTSTR lpszFileName, BOOL bAtCurrDir = TRUE, BOOL bLogTime = FALSE, BOOL bAppendMode = FALSE);
virtual ~CLogger(void);
void Write(const char* format, ...);
void WriteLine(const char* format, ...);
void EnableLogTime(BOOL bEnable);
private:
CStdioFile m_logFile;
BOOL m_bLogTime;
void OpenFile(LPCTSTR lpszFileName, BOOL bAppendMode);
};

//////////////////////////////////////////////////////////////////////////

CLogger::CLogger(LPCTSTR lpszFileName,
BOOL bAtCurrDir /*= TRUE*/,
BOOL bLogTime /*= FALSE*/,
BOOL bAppendMode /*= FALSE*/):
m_bLogTime(bLogTime)
{
CString strLog;
if (bAtCurrDir)
{
TCHAR szFullPath[MAX_PATH];
TCHAR szDir[_MAX_DIR];
TCHAR szDrive[_MAX_DRIVE];

// Get application's full path.
::GetModuleFileName(NULL, szFullPath, MAX_PATH);
// Break full path into seperate components.
_splitpath(szFullPath, szDrive, szDir, NULL, NULL);
// Store application's drive and path
strLog.Format(_T("%s%s//%s"), szDrive, szDir, lpszFileName);
}
else
strLog = lpszFileName;
OpenFile(strLog, bAppendMode);
}

CLogger::CLogger()
{
TCHAR szFileName[MAX_PATH];
::GetModuleFileName(NULL, szFileName, MAX_PATH);
CString strLog(szFileName);

CTime t = CTime::GetCurrentTime();
strLog.Replace(".exe", t.Format("_%Y_%m_%d") + ".txt");
OpenFile(strLog, TRUE);
}

void CLogger::OpenFile(LPCTSTR lpszFileName, BOOL bAppendMode)
{
int mode =
CStdioFile::modeCreate |
CStdioFile::modeWrite |
CStdioFile::shareDenyWrite;

if (bAppendMode)
mode |= CStdioFile::modeNoTruncate;

m_logFile.Open(lpszFileName, mode);
m_logFile.SeekToEnd();
}

CLogger::~CLogger(void)
{
m_logFile.Close();
}

void CLogger::Write(const char* format, ...)
{
static TCHAR msg[1024];
va_list argptr;
va_start(argptr, format);
_vsnprintf(msg, sizeof(msg), format, argptr);
va_end(argptr);

if (m_bLogTime)
m_logFile.WriteString(CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S, ").GetBuffer(0));

m_logFile.WriteString(msg);
m_logFile.Flush();
}

void CLogger::WriteLine(const char* format, ...)
{
static TCHAR msg[1024];
va_list argptr;
va_start(argptr, format);
_vsnprintf(msg, sizeof(msg), format, argptr);
va_end(argptr);

if (m_bLogTime)
m_logFile.WriteString(CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S, ").GetBuffer(0));

m_logFile.WriteString(msg);
m_logFile.WriteString("/n");
m_logFile.Flush();
}

void CLogger::EnableLogTime(BOOL bEnable)
{
m_bLogTime = bEnable;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐