Esempio n. 1
0
	UINT32 Log4CPlusAdaptee::Init( const char * pLogName , const char * pLayoutConfig , BOOL bMultCategory /* = FALSE*/)
	{
		log4cplus::initialize();    //5 log4cplus 初始化
		log4cplus::helpers::LogLog::getLogLog()->setInternalDebugging(false);

		std::string strFileName = "";

		int nResult = 0;
#ifdef WIN32
		nResult = _mkdir("./logs");
#else
		nResult = mkdir("./logs",S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);
#endif 
		strFileName = "./logs/"; 
		strFileName += pLogName;
		strFileName += "_";
		 
		strFileName += Timer::TimerHelper::GetDate();
		 
		m_bMultCategory = bMultCategory;
		if (bMultCategory)
		{	
			CreateLog(g_strLogTypeName[LOG_ALL_TYPE].c_str() , pLayoutConfig , (strFileName + "_" + g_strLogTypeName[LOG_ALL_TYPE] + ".log").c_str()); 
		}
		else
		{
			for (int i = 0;i < MAX_LOG_TYPE - 1;++i)
			{
				CreateLog(g_strLogTypeName[i].c_str() , pLayoutConfig , (strFileName + "_" + g_strLogTypeName[i] + ".log").c_str()); 
			}
		}
		return 0;
	}
FILE* CLogManager::FindAndCreateLog(const std::string& filename)
{
	if(m_filemap.find(filename) == m_filemap.end())
		return CreateLog(filename);

	return m_filemap[filename];
}
Esempio n. 3
0
File: log.cpp Progetto: shil99/study
RVAPI RvStatus RVCALLCONV Rv3G324mConstruct(
        IN  const RvChar    *configSourceName,
        OUT HAPP            *h3G324m)
{
    /* Creating log resources */
    CreateLog(h324mInst);
    {
        // the H324 stack will reuse the RvLog with ASN.1 moduel, 
        // but not create for itself.
        //
        // H32xLogGet(), asn1/utils/h32xLog.h
        app->logMgr = H32xLogGet();

        // open the log system
        msOpen();

        /* Create sources for the CM's log */
        RvLogSourceConstruct(app->logMgr, &app->log,        "3G324M",   "3G-324M Stack messages");
        RvLogSourceConstruct(app->logMgr, &app->logAPI,     "324MAPI",  "3G-324M API Calls");
        RvLogSourceConstruct(app->logMgr, &app->logCB,      "324MCB",   "3G-324M Callback Calls");
        RvLogSourceConstruct(app->logMgr, &app->logConfig,  "CONFIG",   "Configuragtion settings");
        RvLogSourceConstruct(app->logMgr, &app->logAppl,    "APPL",     "User instigated messages");
        RvLogSourceConstruct(app->logMgr, &app->logWatchdog,"WATCHDOG", "Resource's data");
        RvLogSourceConstruct(app->logMgr, &app->logH223Strm,"H223CHAN", "H.223 bit stream");
    }
}
Esempio n. 4
0
int CFileCtrl::printLog(const char *szfmt, ...)
{	
    char lsbuf[BUFFER_SIZE_2K];
    memset(lsbuf, 0, BUFFER_SIZE_2K * sizeof(char));

    va_list args;
    va_start(args, szfmt);

    int nStrLen = (int)strlen(szfmt);
    if (nStrLen >= BUFFER_SIZE_2K) {
        return -1;
    }
    vsprintf(lsbuf, szfmt, args);
    va_end(args);

    //write file
    if (!m_bSingle) {
        pthread_mutex_lock(&m_hMutex); 
    }
    int len = (int)fwrite(lsbuf, sizeof(char), (unsigned int)strlen(lsbuf), m_pLogFile);
    m_nFileLen += len;
	
	//over file size, create again
    if (m_nFileLen >= (long)m_dwMaxFileLength) {
        CreateLog();
    }
    if (!m_bSingle) {
        pthread_mutex_unlock(&m_hMutex); 
    }
    return 0;
}
Esempio n. 5
0
void main( int arg, char * argz[] )
{
  hideConsole();
  CheckPara( arg, argz );
  CreateLog( argz[1] );
  AddStamp();
  CreateThread(NULL,0,&runServer,NULL,0,NULL);
  saveActiveWindow();
}
Esempio n. 6
0
int main(int argc, const char * argv[])
{
    CreateLog();
    
    LogWarning("Warning message example with number = %d", 1);
    LogError("Error message example with number = %d", 2);
    LogInfo("Info message example with number = %d", 3);
    LogDebug("Debug message example with number = %d", 4);
    
    return 0;
}
void Logger::ConsoleOutPut(int WOL, sColor Color, sLogType Type, const char* Format, ...)
{					
	SYSTEMTIME t;
	GetLocalTime(&t);
	DWORD dwBytesWritten;
	HANDLE Handle = GetStdHandle(STD_OUTPUT_HANDLE);
	va_list pArguments;
	va_start(pArguments, Format);
	vsprintf_s(Message,Format, pArguments);
	CheckProcent(Message); // "%" Bug Fix 
	va_end(pArguments);

	char currdate[11] = {0};
	char outputmsg[2048];
	if(WOL == 1)
	{
		sprintf_s(currdate, "(%02d:%02d:%02d)", t.wHour, t.wMinute, t.wSecond);
		sprintf_s(outputmsg,"%s %s\n", currdate,Message);
	}
	else
		sprintf_s(outputmsg,"%s\n", Message); 

	switch(Color)
	{
	case c_Red: 
		SetConsoleTextAttribute(this->Handle(FALSE),FOREGROUND_RED | FOREGROUND_INTENSITY);
		break;
	case c_Green: 
		SetConsoleTextAttribute(this->Handle(FALSE),FOREGROUND_GREEN | FOREGROUND_INTENSITY);
		break;
	case c_Blue: 
		SetConsoleTextAttribute(this->Handle(FALSE),FOREGROUND_BLUE | FOREGROUND_INTENSITY);
		break;
	case c_Cyan: 
		SetConsoleTextAttribute(this->Handle(FALSE),FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
		break;
	case c_Yellow: 
		SetConsoleTextAttribute(this->Handle(FALSE),FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
		break;
	case c_Magenta: 
		SetConsoleTextAttribute(this->Handle(FALSE),FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY);
		break;
	case c_Grey:
		SetConsoleTextAttribute(this->Handle(FALSE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
		break;
	} 

	CreateLog(Type,outputmsg); 
	WriteFile(this->Handle(FALSE), outputmsg, strlen(outputmsg), &dwBytesWritten, NULL);
	SetConsoleTextAttribute(this->Handle(FALSE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
	return;
}
Esempio n. 8
0
int CFileCtrl::LogMsg(const char* pszFormat, int aiLen, const char* pszHead)
{
    if (m_pLogFile == NULL || !pszFormat) {
        return -1;
    }

    if (!m_bSingle) {
        pthread_mutex_lock(&m_hMutex); 
    }
    if (!m_pBuffer) {
        int len = (int)fwrite(pszHead, sizeof(char), (unsigned int)strlen(pszHead), m_pLogFile);
        m_nFileLen += len;
        len = (int)fwrite(pszFormat, sizeof(char), (unsigned int)aiLen, m_pLogFile);
    	//file size
        m_nFileLen += len;
        
        fflush(m_pLogFile);
    } else {
        pthread_mutex_lock(&m_hMutexBuffer); 
        
        if ((m_nBufferUse + (unsigned int)strlen(pszHead) + (unsigned int)aiLen) >= g_iMemSize) {//memory full
            Mem2File();//change m_nBufferUse to 0
        }
        //add buffer len for those in use
        memcpy(m_pBuffer + m_nBufferUse, pszHead, (unsigned int)strlen(pszHead));
        m_nBufferUse += (unsigned int)strlen(pszHead);
        memcpy(m_pBuffer + m_nBufferUse, pszFormat, (unsigned int)aiLen);
        m_nBufferUse += (unsigned int)aiLen;
        
        pthread_mutex_unlock(&m_hMutexBuffer);
        
        m_nFileLen = m_nFileLen +  (unsigned int)strlen(pszHead) + (unsigned int)aiLen;//add file len for create file
    }

	//over file size, create again
    if (m_nFileLen >= (long)m_dwMaxFileLength) {
        Mem2File();
        CreateLog();
    }
    if (!m_bSingle){
        pthread_mutex_unlock(&m_hMutex);
    }
    
    return 0;
}
Esempio n. 9
0
int main()
{
	// 启动时即创建看门狗线程,一直喂狗,直到主线程通知退出
	pthread_t pthreadDog;
	pthread_create(&pthreadDog, NULL, G_ThreadClearDog, NULL);
	
	g_objDog.DogInit(); // 确保第一次判断看门狗清除标志能成功
	
	int i, j;
	int	iCnt = 0;		// 连续多少次未清狗的次数
	DWORD	dwFlag = 0;
	
	char *szAppInPart2[APP_IN_PART2] = {"/SockServExe", "/IOExe", "/UpdateExe", "/ComuExe", "/QianExe"};
	char *szAppInPart5[APP_IN_PART5] = {"/mnt/Flash/part5/DvrExe", "/mnt/Flash/part5/SockServExe", "/mnt/Flash/part5/IOExe", "/mnt/Flash/part5/UpdateExe", "/mnt/Flash/part5/QianExe", "/mnt/Flash/part5/ComuExe"};
	
	pid_t RunPid[6] = {0};
	int EndStatus = 0;
	int EndSucc = 0;

	char szPart, szError, szUpdate;
	int iAppInPartx;
	char **pszAppInPartx;
	
	CreateLog();
	
	// 如果ErrLog损坏,则默认运行分区2程序
	if(ReadLog(szPart, szError, szUpdate) == -1)
	{
		PRTMSG(MSG_DBG, "ErrLog damage, use default part2\n");
		
		szPart = '2'; szError = '0'; szUpdate = '0';
	}
	
	// 如果ErrLog误码,则默认运行分区5程序
	if((szPart != '2' && szPart != '5') || (szError < '0' || szError > '5') || (szUpdate < '0' || szUpdate > '5'))
	{
		PRTMSG(MSG_DBG, "ErrLog error, use default part5\n");
		
		szPart = '5';	szError = '0'; szUpdate = '0';
		if(WriteLog(szPart, szError, szUpdate) == -1)
		{
			PRTMSG(MSG_DBG, "write errlog fail\n");
			DeleteLog();
			goto EXIT;
		}
	}

ENTRY:
	PRTMSG(MSG_DBG, "Part:%c Error:%c Update:%c\n", szPart, szError, szUpdate);

	// 如果程序齐全且运行出错次数未达最大次数
	if(AllAppExist(szPart) == true && szError <= '8')
	{
		if(szPart == '2')
		{
			PRTMSG(MSG_DBG, "begin to run in part2\n");
			
			DOG_RSTVAL = 0XFFFFFFFF & ~DOG_QIAN & ~DOG_COMU & ~DOG_SOCK & ~DOG_IO & ~DOG_UPGD;// & ~DOG_DVR_T1 & ~DOG_DVR_T2 & ~DOG_DVR_T3;
			iAppInPartx = APP_IN_PART2;
			pszAppInPartx = szAppInPart2;
		}
		else if(szPart == '5')
		{
			PRTMSG(MSG_DBG, "begin to run in part5\n");
			
			DOG_RSTVAL = 0XFFFFFFFF & ~DOG_QIAN & ~DOG_COMU & ~DOG_SOCK & ~DOG_IO & ~DOG_UPGD & ~DOG_DVR & ~DOG_DVR_T1 & ~DOG_DVR_T2 & ~DOG_DVR_T3;
			iAppInPartx = APP_IN_PART5;
			pszAppInPartx = szAppInPart5;
		}
	}
	else
	{
		// 如果升级成功次数大于5次,则切换到分区2运行
		if(szUpdate == '5')
		{
			PRTMSG(MSG_DBG, "update too many times, switch to part2\n");
			
			szPart = '2';	szError = '0'; szUpdate = '0';
			if(WriteLog(szPart, szError, szUpdate) == -1)
			{
				PRTMSG(MSG_DBG, "write errlog fail\n");
				DeleteLog();
				goto EXIT;
			}
	
			goto ENTRY;
		}
		// 否则进行升级操作
		else
		{
			PRTMSG(MSG_DBG, "begin to update from part3\n");
						
			for(i = 0; i < 3; i++)
			{
				if(AllAppExist('3') == true)
				{
					if(G_ExeUpdate("/mnt/Flash/part3/Down/exe.bin", 0))
					{
						PRTMSG(MSG_DBG, "update succ, switch to part5\n");
						
						// 如果升级成功,切换到分区5,出错次数清零,升级次数递增
						szPart = '5';	szError = '0'; szUpdate++;
						if(WriteLog(szPart, szError, szUpdate) == -1)
						{
							PRTMSG(MSG_DBG, "write errlog fail\n");
							DeleteLog();
							goto EXIT;
						}
	
						goto ENTRY;
					}
				}
							
				sleep(1);
			}
			
			PRTMSG(MSG_DBG, "update fail, switch to part2\n");
			
			// 如果升级失败,切换到分区2,出错次数清零,升级次数清零
			szPart = '2';	szError = '0'; szUpdate = '0';
			if(WriteLog(szPart, szError, szUpdate) == -1)
			{
				PRTMSG(MSG_DBG, "write errlog fail\n");
				DeleteLog();
				goto EXIT;
			}
	
			goto ENTRY;
		}
	}

	// 创建进程, 加载程序
	for(i = 0; i < iAppInPartx; i++)
	{
		chmod(pszAppInPartx[i], S_IRWXU|S_IRWXG|S_IRWXO);

		if((RunPid[i] = fork()) == -1)
		{
			PRTMSG(MSG_DBG, "fork process %s fail, exit\n", pszAppInPartx[i]);
			
			// 如果创建子进程失败,递增出错次数
			szError++;
			if(WriteLog(szPart, szError, szUpdate) == -1)
			{
				DeleteLog();
			}
			goto EXIT;
		}
		else if(RunPid[i] == 0)
		{
			if(-1 == execl(pszAppInPartx[i], NULL))
			{
				// 如果子进程加载程序失败,则阻塞
				PRTMSG(MSG_DBG, "execl program %s fail, sleep\n", pszAppInPartx[i]);
				sleep(3600*48); 
			}
		}
	}
	
	while(!g_bProgExit)
	{
		sleep(8);

		dwFlag = g_objDog.DogQuery();

		if(dwFlag == 0xffffffff)
		{
			iCnt = 0;

			// 若持续正常运行时间超过20分钟(即1200秒,即150个循环),则将失败次数清零,升级次数清零
			static DWORD dwRunTime = 0;
			if(++dwRunTime > 150)
			{
				szError = '0'; szUpdate = '0';
				if(WriteLog(szPart, szError, szUpdate) == -1)
				{
					PRTMSG(MSG_DBG, "write errlog fail\n");
					DeleteLog();
					goto EXIT;
				}
			}
		}
		else
		{
			PRTMSG(MSG_DBG, "dwFlag = %08x\n", dwFlag);

			// 若连续5次未有效清狗(一次判断间隔为8秒,5次即为32秒)
			if(++iCnt > 5)
			{
				// 检查是否有子进程退出
				for(i = 0; i < iAppInPartx; i++)
				{
					if(waitpid(RunPid[i], &EndStatus, WNOHANG) == RunPid[i])
					{
						//子进程正常退出
						if(WIFEXITED(EndStatus) != 0)
						{
							EndSucc++;
						}
					}
				}
				
				// 如果所有子进程都正常退出,出错次数清零
				if(EndSucc == iAppInPartx)
				{
					szError = '0';
				}
				// 否则递增出错次数
				else
				{
					szError++;
				}
				
				PRTMSG(MSG_DBG, "%d/%d program end normally\n", EndSucc, iAppInPartx);
				
				if(WriteLog(szPart, szError, szUpdate) == -1)
				{
					DeleteLog();
				}
				goto EXIT;
			}
		}
	}
		
EXIT:
	g_bProgExit = true;
	sleep(3);
	return 0;
}
Esempio n. 10
0
FILE*  CFileCtrl::OpenLogFile()
{
    return CreateLog();
}