读取配置文件

 
	void SetLog(const CStdString& strConfigFilePath)
	{
		char strTemp[MAX_PATH] = {0};
		// 读取日志路径
		GetPrivateProfileString("log-setting", "LogPathName", m_strModulePath.c_str(), strTemp, MAX_PATH, strConfigFilePath) ;
		if (0x2 == errno)
		{
			throw runtime_error ("配置文件没有找到") ;
		}
		m_filename			= strTemp ;
		memset (strTemp, 0, MAX_PATH) ;

		// 读取日志名字
		GetPrivateProfileString("log-setting", "LogFileName", m_strModuleName.c_str(), strTemp, MAX_PATH, strConfigFilePath) ;
		m_filename += strTemp ;
		m_LogName	= strTemp ;
		// 获取日志文件名字的前缀
		m_filenamePrefix = m_filename ;
		memset (strTemp, 0, MAX_PATH) ;


		// 获取最大日志文件编号
		GetMaxLogNo () ;

		// 将日志文件的名字拼上编号 
		_i64toa (m_nLastMaxNo, strTemp, 10) ;
		m_filename		+= strTemp ;
		m_filename		+= ".log" ;
		memset (strTemp, 0, MAX_PATH) ;


		// 读取日志大小,默认为10MB
		GetPrivateProfileString("log-setting", "LogSize", "10485760", strTemp, MAX_PATH, strConfigFilePath) ;
		m_maxFileSize = atol (strTemp) ;
		memset (strTemp, 0, MAX_PATH) ;

		// 读取日志级别
		GetPrivateProfileString("log-setting", "LogLevel", "ALL_LOG_LEVEL", strTemp, MAX_PATH, strConfigFilePath) ;
		m_LogLevel = strTemp ;
		memset (strTemp, 0, MAX_PATH) ;

		// 读取是否立即刷新
		GetPrivateProfileString("log-setting", "LogIMFlush", "TRUE", strTemp, MAX_PATH, strConfigFilePath) ;
		if (!strcmp(strTemp, "FALSE") || !strcmp(strTemp, "false"))
		{
			m_immediateFlush = FALSE ;
		}
		else
		{
			// 只要不是FLASE,就把置为TRUE,不管配置文件里有没有写错
			m_immediateFlush = TRUE ;
		}
		memset (strTemp, 0, MAX_PATH) ;

		// 读取硬盘剩余多少时就不写日志了,默认为100MB
		GetPrivateProfileString("log-setting", "RemainMemorry", "100", strTemp, MAX_PATH, strConfigFilePath) ;
		int nRemainMemorry	= atoi (strTemp) ;
		m_RemainMemorry		= (__int64)nRemainMemorry * 1024 * 1024 ;
		memset (strTemp, 0, MAX_PATH) ;
	}

你可能感兴趣的:(path,C/C++语言)