503 lines
14 KiB
C++
503 lines
14 KiB
C++
|
|
/*//===============================================================
|
|||
|
|
|
|||
|
|
<< LOG FILE >>
|
|||
|
|
|
|||
|
|
PRGM : B4nFter
|
|||
|
|
|
|||
|
|
FILE : LOGFILE.HPP
|
|||
|
|
DESC : <EFBFBD>α<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
INIT BUILT DATE : 2005. 01. 12
|
|||
|
|
LAST BUILT DATE : 2007. 04. 10
|
|||
|
|
|
|||
|
|
Copyright<EFBFBD><EFBFBD> 2002~2009 B4nFter (b4nfter@gmail.com) and Co-Writers. All Rights Reserved.
|
|||
|
|
|
|||
|
|
*///===============================================================
|
|||
|
|
|
|||
|
|
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
// INCLUDE
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
#include "LOGBASE.HPP"
|
|||
|
|
#include "CRITICALSECTION.HPP"
|
|||
|
|
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
// DEFINE
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
#define DF_DEFAULT_LOGFILENAME _T("LOGFILE")
|
|||
|
|
#define DF_DEFAULT_LOGEXTNAME _T("log")
|
|||
|
|
#define DF_DEFAULT_LINEBUFFERSIZE (1024 * 64)
|
|||
|
|
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
// DECLARATION
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : CLASS
|
|||
|
|
// NAME : CLogFile
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20>α<CEB1> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
class CLogFile : public CLogBase
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
typedef VOID (*LPFN_OUTPUT_LOGPROC)(LPCTSTR /*<2A>α<EFBFBD><CEB1>ؽ<EFBFBD>Ʈ*/, LPVOID /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>*/); // <20>ܺ<EFBFBD><DCBA><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
FILE* m_lpLogFile;
|
|||
|
|
TCHAR m_szFileName[MAX_PATH];
|
|||
|
|
TCHAR m_szDirName[MAX_PATH];
|
|||
|
|
TCHAR m_szExtName[MAX_PATH];
|
|||
|
|
TCHAR m_szTextBuffer[DF_DEFAULT_LINEBUFFERSIZE];
|
|||
|
|
|
|||
|
|
SYSTEMTIME m_stCurSysTime;
|
|||
|
|
SYSTEMTIME m_stSysTime;
|
|||
|
|
CCriticalSection m_crLogFile;
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
inline CLogFile();
|
|||
|
|
inline ~CLogFile();
|
|||
|
|
|
|||
|
|
inline BOOL Create(
|
|||
|
|
LPCTSTR lpszFileName = DF_DEFAULT_LOGFILENAME,
|
|||
|
|
LPCTSTR lpszDirName = NULL,
|
|||
|
|
LPCTSTR lpszExtName = DF_DEFAULT_LOGEXTNAME,
|
|||
|
|
BOOL bAddDate = TRUE
|
|||
|
|
);
|
|||
|
|
inline VOID Close();
|
|||
|
|
|
|||
|
|
inline virtual BOOL Write(LPCTSTR lpszFormat, ...); // P.S.> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (*.h, *.cpp <20><> <20>и<EFBFBD> <20>ʿ<EFBFBD>)
|
|||
|
|
inline virtual BOOL WriteDate(LPCTSTR lpszFormat, ...); // P.S.> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (*.h, *.cpp <20><> <20>и<EFBFBD> <20>ʿ<EFBFBD>)
|
|||
|
|
inline virtual BOOL WriteDirect(LPCTSTR lpszText); // P.S.> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (*.h, *.cpp <20><> <20>и<EFBFBD> <20>ʿ<EFBFBD>)
|
|||
|
|
inline VOID UpdateFileNameDate();
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
inline BOOL Initialize();
|
|||
|
|
inline VOID Finalize();
|
|||
|
|
|
|||
|
|
inline BOOL ChangeFileNameDate(SYSTEMTIME& stSysTime);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
// IMPLEMENTATION
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : FUNCTION
|
|||
|
|
// NAME : CLogFile::CLogFile
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// PARM : N/A
|
|||
|
|
// RETV : N/A
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
CLogFile::CLogFile()
|
|||
|
|
{
|
|||
|
|
Initialize();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : FUNCTION
|
|||
|
|
// NAME : CLogFile::~CLogFile
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20>Ҹ<EFBFBD><D2B8><EFBFBD>
|
|||
|
|
// PARM : N/A
|
|||
|
|
// RETV : N/A
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
CLogFile::~CLogFile()
|
|||
|
|
{
|
|||
|
|
Finalize();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : FUNCTION
|
|||
|
|
// NAME : CLogFile::Initialize
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20><>ü <20><><EFBFBD><EFBFBD> <20>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
|
// PARM : N/A
|
|||
|
|
// RETV : TRUE - <20><><EFBFBD><EFBFBD> / FALSE - <20><><EFBFBD><EFBFBD>
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
BOOL CLogFile::Initialize()
|
|||
|
|
{
|
|||
|
|
m_lpLogFile = NULL;
|
|||
|
|
::memset(m_szDirName, 0, sizeof(m_szDirName));
|
|||
|
|
::memset(m_szFileName, 0, sizeof(m_szFileName));
|
|||
|
|
if (NOERROR != m_crLogFile.Open()) {
|
|||
|
|
BASE_RETURN(FALSE);
|
|||
|
|
}
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : FUNCTION
|
|||
|
|
// NAME : CLogFile::Finalize
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20><>ü <20><><EFBFBD><EFBFBD> <20>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
|
// PARM : N/A
|
|||
|
|
// RETV : N/A
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
VOID CLogFile::Finalize()
|
|||
|
|
{
|
|||
|
|
Close();
|
|||
|
|
m_crLogFile.Close();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : FUNCTION
|
|||
|
|
// NAME : CLogFile::Create
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20>αױ<CEB1><D7B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
// PARM : 1 . lpszFileName - <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
|||
|
|
// 2 . lpszDirName - <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
|||
|
|
// 3 . lpszExtName - <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
|||
|
|
// 4 . bAddDate - <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><>¥<EFBFBD><C2A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
// RETV : TRUE - <20><><EFBFBD><EFBFBD> / FALSE - <20><><EFBFBD><EFBFBD>
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
BOOL CLogFile::Create(LPCTSTR lpszFileName, LPCTSTR lpszDirName, LPCTSTR lpszExtName, BOOL bAddDate)
|
|||
|
|
{
|
|||
|
|
CLockAuto AutoLock(& m_crLogFile);
|
|||
|
|
|
|||
|
|
::GetLocalTime (& m_stSysTime);
|
|||
|
|
m_stCurSysTime = m_stSysTime;
|
|||
|
|
|
|||
|
|
if (!lstrcmp(lpszFileName, _T(""))) {
|
|||
|
|
STRNCPY(m_szFileName, DF_DEFAULT_LOGFILENAME, COUNT_OF(m_szFileName));
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
STRNCPY(m_szFileName, lpszFileName, COUNT_OF(m_szFileName));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!lpszExtName || !lstrcmp(lpszExtName, _T(""))) {
|
|||
|
|
::memset(m_szExtName, 0, sizeof(m_szExtName));
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
STRNCPY(m_szExtName, lpszExtName, COUNT_OF(m_szExtName));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TCHAR szLogFileFullName[MAX_PATH];
|
|||
|
|
if (!lpszDirName || !lstrcmp(lpszDirName, _T(""))) {
|
|||
|
|
::memset(m_szDirName, 0, sizeof(m_szDirName));
|
|||
|
|
|
|||
|
|
if (bAddDate) {
|
|||
|
|
SNPRINTF(MODE_DBG_EX(szLogFileFullName, COUNT_OF(szLogFileFullName)), COUNT_OF(szLogFileFullName),
|
|||
|
|
_T(".\\%s_%04d%02d%02d%02d%02d%02d.%s"),
|
|||
|
|
m_szFileName,
|
|||
|
|
m_stSysTime.wYear,
|
|||
|
|
m_stSysTime.wMonth,
|
|||
|
|
m_stSysTime.wDay,
|
|||
|
|
m_stSysTime.wHour,
|
|||
|
|
m_stSysTime.wMinute,
|
|||
|
|
m_stSysTime.wSecond,
|
|||
|
|
m_szExtName
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
SNPRINTF(MODE_DBG_EX(szLogFileFullName, COUNT_OF(szLogFileFullName)), COUNT_OF(szLogFileFullName),
|
|||
|
|
_T(".\\%s.%s"),
|
|||
|
|
m_szFileName,
|
|||
|
|
m_szExtName
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
STRNCPY(m_szDirName, lpszDirName, COUNT_OF(m_szDirName));
|
|||
|
|
::CreateDirectory(m_szDirName, NULL);
|
|||
|
|
|
|||
|
|
if (bAddDate) {
|
|||
|
|
SNPRINTF(MODE_DBG_EX(szLogFileFullName, COUNT_OF(szLogFileFullName)), COUNT_OF(szLogFileFullName),
|
|||
|
|
_T("%s\\%s_%04d%02d%02d%02d%02d%02d.%s"),
|
|||
|
|
m_szDirName,
|
|||
|
|
m_szFileName,
|
|||
|
|
m_stSysTime.wYear,
|
|||
|
|
m_stSysTime.wMonth,
|
|||
|
|
m_stSysTime.wDay,
|
|||
|
|
m_stSysTime.wHour,
|
|||
|
|
m_stSysTime.wMinute,
|
|||
|
|
m_stSysTime.wSecond,
|
|||
|
|
m_szExtName
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
SNPRINTF(MODE_DBG_EX(szLogFileFullName, COUNT_OF(szLogFileFullName)), COUNT_OF(szLogFileFullName),
|
|||
|
|
_T("%s\\%s.%s"),
|
|||
|
|
m_szDirName,
|
|||
|
|
m_szFileName,
|
|||
|
|
m_szExtName
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_lpLogFile = _tfopen(szLogFileFullName, _T("a+b"));
|
|||
|
|
if (!m_lpLogFile) {
|
|||
|
|
BASE_TRACE(_T("!m_lpLogFile - CLogFile::Create()\n"));
|
|||
|
|
return FALSE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if defined(_UNICODE)
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD> UCS-2 (Little Endian) <20><> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> 0xFF, 0xFE <20><> <20><> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>ٿ<EFBFBD><D9BF>־<EFBFBD><D6BE><EFBFBD> <20><>
|
|||
|
|
::fputc(0xFF, m_lpLogFile);
|
|||
|
|
::fputc(0xFE, m_lpLogFile);
|
|||
|
|
#endif // _UNICODE
|
|||
|
|
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : FUNCTION
|
|||
|
|
// NAME : CLogFile::Close
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20>αױ<CEB1><D7B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
// PARM : N/A
|
|||
|
|
// RETV : N/A
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
VOID CLogFile::Close()
|
|||
|
|
{
|
|||
|
|
CLockAuto AutoLock(& m_crLogFile);
|
|||
|
|
|
|||
|
|
if (m_lpLogFile) {
|
|||
|
|
::fclose (m_lpLogFile);
|
|||
|
|
m_lpLogFile = NULL;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : FUNCTION
|
|||
|
|
// NAME : CLogFile::Write
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20>α<CEB1> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> (<28><>¥<EFBFBD><C2A5><EFBFBD><EFBFBD>)
|
|||
|
|
// PARM : 1 . lpszFormat - <20>α׳<CEB1><D7B3><EFBFBD>
|
|||
|
|
// RETV : TRUE - <20><><EFBFBD><EFBFBD> / FALSE - <20><><EFBFBD><EFBFBD>
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
BOOL CLogFile::Write(LPCTSTR lpszFormat, ...)
|
|||
|
|
{
|
|||
|
|
if (!m_lpLogFile) {
|
|||
|
|
BASE_TRACE(_T("!m_lpLogFile - CLogFile::WriteDate()\n"));
|
|||
|
|
return FALSE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
va_list lpArgPtr;
|
|||
|
|
INT iChrWritten;
|
|||
|
|
|
|||
|
|
CLockAuto AutoLock(& m_crLogFile);
|
|||
|
|
|
|||
|
|
va_start(lpArgPtr, lpszFormat);
|
|||
|
|
#if (_MSC_VER >= 1400) // VS.NET 2005 <20>̻<EFBFBD>
|
|||
|
|
iChrWritten = _vsntprintf_s(m_szTextBuffer, COUNT_OF(m_szTextBuffer), lpszFormat, lpArgPtr);
|
|||
|
|
#else // #if (_MSC_VER >= 1400)
|
|||
|
|
#pragma warning (disable:4995)
|
|||
|
|
iChrWritten = _vsntprintf(m_szTextBuffer, COUNT_OF(m_szTextBuffer), lpszFormat, lpArgPtr);
|
|||
|
|
#pragma warning (default:4995)
|
|||
|
|
#endif // #if (_MSC_VER >= 1400)
|
|||
|
|
va_end(lpArgPtr);
|
|||
|
|
|
|||
|
|
#if (_MSC_VER >= 1400) // VS.NET 2005 <20>̻<EFBFBD>
|
|||
|
|
_ftprintf_s(m_lpLogFile, _T("%s\r\n"), m_szTextBuffer);
|
|||
|
|
#else // #if (_MSC_VER >= 1400)
|
|||
|
|
_ftprintf(m_lpLogFile, _T("%s\r\n"), m_szTextBuffer);
|
|||
|
|
#endif // #if (_MSC_VER >= 1400)
|
|||
|
|
|
|||
|
|
// !!! <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ?
|
|||
|
|
/*
|
|||
|
|
if (m_lpLogLink) {
|
|||
|
|
m_lpLogLink->Write(lpszFormat, lpArgPtr);
|
|||
|
|
}
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : FUNCTION
|
|||
|
|
// NAME : CLogFile::WriteDate
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20>α<CEB1> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> (<28><>¥<EFBFBD><C2A5><EFBFBD><EFBFBD>)
|
|||
|
|
// PARM : 1 . lpszFormat - <20>α׳<CEB1><D7B3><EFBFBD>
|
|||
|
|
// RETV : TRUE - <20><><EFBFBD><EFBFBD> / FALSE - <20><><EFBFBD><EFBFBD>
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
BOOL CLogFile::WriteDate(LPCTSTR lpszFormat, ...)
|
|||
|
|
{
|
|||
|
|
if (!m_lpLogFile) {
|
|||
|
|
BASE_TRACE(_T("!m_lpLogFile - CLogFile::WriteDate()\n"));
|
|||
|
|
return FALSE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
va_list lpArgPtr;
|
|||
|
|
INT iChrWritten;
|
|||
|
|
|
|||
|
|
CLockAuto AutoLock(& m_crLogFile);
|
|||
|
|
|
|||
|
|
va_start(lpArgPtr, lpszFormat);
|
|||
|
|
#if (_MSC_VER >= 1400) // VS.NET 2005 <20>̻<EFBFBD>
|
|||
|
|
iChrWritten = _vsntprintf_s(m_szTextBuffer, COUNT_OF(m_szTextBuffer), lpszFormat, lpArgPtr);
|
|||
|
|
#else // #if (_MSC_VER >= 1400)
|
|||
|
|
#pragma warning (disable:4995)
|
|||
|
|
iChrWritten = _vsntprintf(m_szTextBuffer, COUNT_OF(m_szTextBuffer), lpszFormat, lpArgPtr);
|
|||
|
|
#pragma warning (default:4995)
|
|||
|
|
#endif // #if (_MSC_VER >= 1400)
|
|||
|
|
va_end(lpArgPtr);
|
|||
|
|
|
|||
|
|
::GetLocalTime(& m_stSysTime);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>Ϸα<CFB7><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>¥<EFBFBD><C2A5> <20>̾<EFBFBD><CCBE><EFBFBD> <20><> <20>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>/<2F><>/<2F><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
#if (_MSC_VER >= 1400) // VS.NET 2005 <20>̻<EFBFBD>
|
|||
|
|
_ftprintf_s(m_lpLogFile, _T("%04d-%02d-%02d %02d:%02d:%02d %s\r\n"),
|
|||
|
|
#else // #if (_MSC_VER >= 1400)
|
|||
|
|
_ftprintf(m_lpLogFile, _T("%04d-%02d-%02d %02d:%02d:%02d %s\r\n"),
|
|||
|
|
#endif // #if (_MSC_VER >= 1400)
|
|||
|
|
m_stSysTime.wYear,
|
|||
|
|
m_stSysTime.wMonth,
|
|||
|
|
m_stSysTime.wDay,
|
|||
|
|
m_stSysTime.wHour,
|
|||
|
|
m_stSysTime.wMinute,
|
|||
|
|
m_stSysTime.wSecond,
|
|||
|
|
m_szTextBuffer
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// !!! <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ?
|
|||
|
|
/*
|
|||
|
|
if (m_lpLogLink) {
|
|||
|
|
m_lpLogLink->WriteDate(lpszFormat, lpArgPtr);
|
|||
|
|
}
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : FUNCTION
|
|||
|
|
// NAME : CLogFile::WriteDirect
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20>α<CEB1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
// PARM : 1 . lpszText - <20>α׳<CEB1><D7B3><EFBFBD>
|
|||
|
|
// RETV : TRUE - <20><><EFBFBD><EFBFBD> / FALSE - <20><><EFBFBD><EFBFBD>
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
BOOL CLogFile::WriteDirect(LPCTSTR lpszText)
|
|||
|
|
{
|
|||
|
|
if (!m_lpLogFile) {
|
|||
|
|
BASE_TRACE(_T("!m_lpLogFile - CLogFile::WriteDirect()\n"));
|
|||
|
|
return FALSE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CLockAuto AutoLock(& m_crLogFile);
|
|||
|
|
|
|||
|
|
#if (_MSC_VER >= 1400) // VS.NET 2005 <20>̻<EFBFBD>
|
|||
|
|
_ftprintf_s(m_lpLogFile, _T("%s\r\n"), lpszText);
|
|||
|
|
#else // #if (_MSC_VER >= 1400)
|
|||
|
|
_ftprintf(m_lpLogFile, _T("%s\r\n"), lpszText);
|
|||
|
|
#endif // #if (_MSC_VER >= 1400)
|
|||
|
|
|
|||
|
|
// !!! <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ?
|
|||
|
|
/*
|
|||
|
|
if (m_lpLogLink) {
|
|||
|
|
m_lpLogLink->WriteDirect(lpszText);
|
|||
|
|
}
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : FUNCTION
|
|||
|
|
// NAME : CLogFile::UpdateFileNameDate
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20><>¥<EFBFBD><C2A5> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>θ<EFBFBD> Ȯ<><C8AE><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
// PARM : N/A
|
|||
|
|
// RETV : N/A
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
VOID CLogFile::UpdateFileNameDate()
|
|||
|
|
{
|
|||
|
|
CLockAuto AutoLock(& m_crLogFile);
|
|||
|
|
|
|||
|
|
::GetLocalTime(& m_stSysTime);
|
|||
|
|
|
|||
|
|
if (m_stSysTime.wDay != m_stCurSysTime.wDay) {
|
|||
|
|
ChangeFileNameDate(m_stSysTime);
|
|||
|
|
m_stCurSysTime = m_stSysTime;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : FUNCTION
|
|||
|
|
// NAME : CLogFile::ChangeFileNameDate
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20>Էµ<D4B7> <20><>¥<EFBFBD><C2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
// PARM : 1 . stSysTime - <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>¥
|
|||
|
|
// RETV : TRUE - <20><><EFBFBD><EFBFBD> / FALSE - <20><><EFBFBD><EFBFBD>
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
BOOL CLogFile::ChangeFileNameDate(SYSTEMTIME& stSysTime)
|
|||
|
|
{
|
|||
|
|
if (m_lpLogFile) {
|
|||
|
|
::fclose(m_lpLogFile);
|
|||
|
|
|
|||
|
|
m_stSysTime = stSysTime;
|
|||
|
|
|
|||
|
|
TCHAR szLogFileFullName[MAX_PATH];
|
|||
|
|
|
|||
|
|
if (!lstrcmp(m_szDirName, _T(""))) {
|
|||
|
|
SNPRINTF(MODE_DBG_EX(szLogFileFullName, COUNT_OF(szLogFileFullName)), COUNT_OF(szLogFileFullName),
|
|||
|
|
_T(".\\%s_%04d%02d%02d%02d%02d%02d.%s"),
|
|||
|
|
m_szFileName,
|
|||
|
|
m_stSysTime.wYear,
|
|||
|
|
m_stSysTime.wMonth,
|
|||
|
|
m_stSysTime.wDay,
|
|||
|
|
m_stSysTime.wHour,
|
|||
|
|
m_stSysTime.wMinute,
|
|||
|
|
m_stSysTime.wSecond,
|
|||
|
|
m_szExtName
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
::CreateDirectory(m_szDirName, NULL);
|
|||
|
|
|
|||
|
|
SNPRINTF(MODE_DBG_EX(szLogFileFullName, COUNT_OF(szLogFileFullName)), COUNT_OF(szLogFileFullName),
|
|||
|
|
_T("%s\\%s_%04d%02d%02d%02d%02d%02d.%s"),
|
|||
|
|
m_szDirName,
|
|||
|
|
m_szFileName,
|
|||
|
|
m_stSysTime.wYear,
|
|||
|
|
m_stSysTime.wMonth,
|
|||
|
|
m_stSysTime.wDay,
|
|||
|
|
m_stSysTime.wHour,
|
|||
|
|
m_stSysTime.wMinute,
|
|||
|
|
m_stSysTime.wSecond,
|
|||
|
|
m_szExtName
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!(m_lpLogFile = _tfopen(szLogFileFullName, _T("a+")))) {
|
|||
|
|
BASE_TRACE(_T("!(m_lpLogFile = _tfopen(szLogFileFullName, _T(\"a+\"))) - CLogFile::ChangeFileNameDate()\n"));
|
|||
|
|
return FALSE;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
|