Example #1
0
void CTonyXiaoLog::MakeFileName(void) //创造一个新文件名
		{
	char szTemp[LOG_ITEM_LENGTH_MAX]; //临时缓冲区
	MakeATimeString(szTemp, LOG_ITEM_LENGTH_MAX);
	//获得时间戳字符串
	FixFileInfo(); //维护文件总个数不超标(默认72 个)
	int nLen = SafePrintf( //注意看这句,利用构造函数中的种子名字
			m_szFileName, //加上时间戳,后面再加上“.log”后缀
			FILENAME_STRING_LENGTH * 2, //生成日志文件名
			"%s_%s.log", m_szFilePath, szTemp);
	nLen++; //习惯,长度+1,保留最后’\0’的位置
//将新的文件名添加到队列
	int nAddLastRet = m_pFileInfoQueue->AddLast(m_szFileName, nLen);
	if (0 >= nAddLastRet) { //这是一个特殊的防护,如果队列满了(内存不够用),删除最开始三个文件名
//释放内存空间,这是预防服务器业务太繁忙,导致内存不够用,队列无法添加的
//规避措施,这也体现非关键模块为关键业务模块让路的思维
		DeleteFirstFile();
		DeleteFirstFile();
		DeleteFirstFile();
//删除三个之后,重新尝试添加
		nAddLastRet = m_pFileInfoQueue->AddLast(m_szFileName, nLen);
//如果此时添加仍然失败,投降,日志发生一点错乱没有关系。
	}
	m_nFileSize = 0; //新文件创建,文件长度为0
//下面逻辑,新创建一个文件,在文件头先打印一点文件名相关信息,帮助以后的跟踪查找
	time (&m_tFileNameMake);
	{ //由于这是非业务打印,因此不希望输出到屏幕,这里临时将屏幕开关关闭
		bool bPrint2Scr = m_bPrintf2ScrFlag;
		m_bPrintf2ScrFlag = false;
		_Printf("Tony.Xiao. base libeary log file %s\n", m_szFileName);
		_Printf("-----------------------------------------------\n");
		m_bPrintf2ScrFlag = bPrint2Scr; //输出完毕,屏幕开关恢复原值
	}
}
Example #2
0
void CNEOLog::MakeFileName(void)
{
    char szTemp[LOG_ITEM_LENGTH_MAX] = "\0";
    MakeATimeString(szTemp,LOG_ITEM_LENGTH_MAX);  //获得时间戳字符串
    FixFileInfo();                                //维护文件总个数(默认72个)
    int nLen=SafePrintf(m_szFileName,(FILENAME_STRING_LENGTH*2),"%s_%s.log",m_szFilePath,szTemp);//生成日志文件名
    nLen++;
    //将新的文件名添加到队列
    int nAddLastRet=m_pFileInfoQueue->AddLast(m_szFileName,nLen);
    if(0>=nAddLastRet)
    {
       //为防止队列满了,删除对头的三个名字
        DeleteFirstFile();
        DeleteFirstFile();
        DeleteFirstFile();
        //重新添加
        nAddLastRet=m_pFileInfoQueue->AddLast(m_szFileName,nLen);
    }
    m_nFileSize=0;                               //新建文件,长度为0
    //新建文件,在文件头打印一些信息
    time(&m_tFileNameMake);
    {
       bool bPrintToScr=m_bPrintfToScrFlag;
       m_bPrintfToScrFlag=false;
       _Printf("NEO.base lib log file %s\n",m_szFileName);
       _Printf("____________________________________\n");
       m_bPrintfToScrFlag=bPrintToScr;//输出完毕,恢复标志
    }

}
Example #3
0
void CNEOLog::FixFileInfo(void)
{
    //int nAddLastRet=0;
    while(m_pFileInfoQueue->GetTokenCount()>=m_nHoldFileMax)
    {
       DeleteFirstFile();
    }
}
Example #4
0
void CTonyXiaoLog::FixFileInfo(void) //维护文件总个数不超标
		{
	int nAddLastRet = 0;
//请注意,这里不是if,而是一个while,如果因某种原因,超标很多个文件
//利用这个循环技巧,很轻松地将超标文件删除到只有72 个,
//很多时候,维护数组不超限,都是使用这个技巧
	while (m_pFileInfoQueue->GetTokenCount() >= m_nHoldFileMax) {
		DeleteFirstFile();
	}
}