⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inilogfile.cpp

📁 这是一个工厂的生产线的仓库管理.有计划,实绩,库存等
💻 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 + -