📄 inilogfile.cpp
字号:
/*--------------------------------------------------------------------------
抬操柤: IniLogFile.CPP
----------------------------------------------------------------------------
# Date Comments by
------- -------- ------------------------------------------------------ ----
Rev 1.0 05.07.20 Written A.Y
--------------------------------------------------------------------------*/
#include "IniLogFile.h"
#define LOG_LEVEL 3
#define LOG_MAXLINE 1000
/////////// Global Variable ////////////////////////////////////////
IniFile Ini("FAP.ini");
LogFile Log;
/* ---------------------------------------------------------------------------
IniFile::IniFile Constructor lzFileName:"FAP.ini"
--------------------------------------------------------------------------- */
IniFile::IniFile(LPSTR lpFileName)
{
GetCurrentDirectory(MAX_PATH, szIniFile);
strcat(szIniFile, "\\");
strcat(szIniFile, lpFileName);
}
/* ---------------------------------------------------------------------------
IniFile:: GetPrivateProfileInt
--------------------------------------------------------------------------- */
int IniFile::GetInt(LPSTR lpAppName, LPSTR lpKeyName, int Default)
{
return GetPrivateProfileInt(lpAppName, lpKeyName, Default, szIniFile);
}
/* ---------------------------------------------------------------------------
IniFile:: GetPrivateProfileString
--------------------------------------------------------------------------- */
int IniFile::GetString(LPSTR lpAppName, LPSTR lpKeyName, LPSTR lpDefault, LPSTR lpRetString, int nSize)
{
return GetPrivateProfileString(lpAppName, lpKeyName, lpDefault, lpRetString, nSize, szIniFile);
}
/* ---------------------------------------------------------------------------
IniFile:: WritePrivateProfileString
--------------------------------------------------------------------------- */
void IniFile::WriteString(LPSTR lpAppName, LPSTR lpKeyName, int value)
{
char wkstr[20];
wsprintf(wkstr, "%d", value);
WritePrivateProfileString(lpAppName, lpKeyName, wkstr, szIniFile);
}
/* ---------------------------------------------------------------------------
LogFile:: Constructor
--------------------------------------------------------------------------- */
LogFile::LogFile()
{
memset(szLogFile, '\0', 20);
hLogFile = INVALID_HANDLE_VALUE;
LogFileNo = 0;
LogLine = 0;
LogLevel = 0;
LogMaxLine = 0;
}
/* ---------------------------------------------------------------------------
LogFile:: Open
--------------------------------------------------------------------------- */
BOOL LogFile::Open()
{
LogFileNo = Ini.GetInt("LOG","FILENO",0);
LogLine = Ini.GetInt("LOG","LOGLINE",0);
LogLevel = Ini.GetInt("LOG","LOGLEVEL",LOG_LEVEL);
LogMaxLine = Ini.GetInt("LOG","LOGMAXLINE",LOG_MAXLINE);
wsprintf(szLogFile, "FAPLOG%d.log", LogFileNo);
hLogFile = CreateFile( szLogFile,
GENERIC_WRITE,
FILE_SHARE_WRITE | FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
NULL);
if (hLogFile == INVALID_HANDLE_VALUE)
return FALSE;
SetFilePointer(hLogFile, 0, NULL, FILE_END);
// Semaphore Create
hSemaphore = CreateSemaphore( NULL, // no security
1, // cSemInitial
1, // cSemMax
"" ); // name
if (hSemaphore == NULL)
return (FALSE);
return (TRUE);
}
/* ---------------------------------------------------------------------------
LogFile:: Close
--------------------------------------------------------------------------- */
void LogFile::Close(int kid )
{
if (hLogFile != INVALID_HANDLE_VALUE){
if (kid){
Ini.WriteString("LOG", "FILENO", LogFileNo);
Ini.WriteString("LOG", "LOGLINE", LogLine);
}
CloseHandle(hLogFile);
hLogFile = INVALID_HANDLE_VALUE;
}
// close Semaphore
if (hSemaphore != NULL)
CloseHandle(hSemaphore);
}
/* ---------------------------------------------------------------------------
LogFile:: Message Write
mod 0: write message
1: read message
2: create/destroy message
3: special message
--------------------------------------------------------------------------- */
void LogFile::MsgWrite(int mod, LPSTR msg)
{
static char txMSG[] = "仼 ";
static char rxMSG[] = "仺 ";
static char cdMSG[] = "** ";
static char spMSG[] = "## ";
static char crlf[] = {0x0D, 0x0A};
char ymd[10], hms[10];
int len;
DWORD num;
if (LogLine > LogMaxLine){
LogLine = 0;
CloseHandle(hLogFile);
LogFileNo++;
LogFileNo %= 2;
wsprintf(szLogFile, "FAPLOG%d.log", LogFileNo);
hLogFile = CreateFile(szLogFile,
GENERIC_WRITE,
FILE_SHARE_WRITE | FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
NULL);
}
if (hLogFile == INVALID_HANDLE_VALUE)
return;
switch (mod){
case 0: // write message
case 1: // read message
if (LogLevel < 1) return;
// pass(1,2,3)
break;
case 2: // create/destroy message
if (LogLevel < 3) return;
// pass(3)
break;
case 3: // special message
if (LogLevel < 2) return;
// pass(2,3)
break;
default:
return;
}
// wait Semaphore
WaitForSingleObject(hSemaphore, INFINITE);
LogLine++;
len = strlen(msg);
_strdate(ymd); // mm/dd/yy
ymd[8] = ' ';
WriteFile(hLogFile, ymd, 9, &num, NULL);
_strtime(hms); // hh:mm:ss
hms[8] = ' ';
WriteFile(hLogFile, hms, 9, &num, NULL);
switch (mod){
case 0: // write message
WriteFile(hLogFile, txMSG, 6, &num, NULL);
WriteFile(hLogFile, msg, len, &num, NULL);
break;
case 1: // read message
WriteFile(hLogFile, rxMSG, 6, &num, NULL);
WriteFile(hLogFile, msg, len, &num, NULL);
break;
case 2: // create/destroy message
WriteFile(hLogFile, cdMSG, 6, &num, NULL);
WriteFile(hLogFile, msg, len, &num, NULL);
break;
case 3: // special message
WriteFile(hLogFile, spMSG, 6, &num, NULL);
WriteFile(hLogFile, msg, len, &num, NULL);
break;
}
WriteFile(hLogFile, crlf, 2, &num, NULL);
// Release Semaphore
ReleaseSemaphore(hSemaphore, 1, NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -