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

来源:互联网 发布:windows media server 编辑:程序博客网 时间:2024/05/17 04:17
#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;
}
 
原创粉丝点击