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

📄 loghelper.cpp

📁 在linux下基于UDP通讯的程序,包括客户端与服务端.
💻 CPP
字号:
#include "LogHelper.h"
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
CLogHelper theLogger;
CLogHelper::CLogHelper()
{
	InitLock(&m_logLock);
	memset(m_szFile, 0, FILE_NAME_LEN);
	m_lBufferedSize = 0;
}

CLogHelper::~CLogHelper()
{
  Flush();
}


bool CLogHelper::SetLogFile(const char *szName)
{
    if(!szName || (strlen(szName) == 0))
	{
		return false;
	}else
	{  
		LockOn(&m_logLock);
		memset(m_szFile, 0, FILE_NAME_LEN);
		sprintf(m_szFile, "%s", szName);
		LockOff(&m_logLock);
		return true;
	}
	
}

int CLogHelper::Flush()
{
	if(strlen(m_szFile) > 0)
	{
		LockOn(&m_logLock);
		int nRet = m_strBuff.size();
		if(nRet <= 0)
		{
			LockOff(&m_logLock);
			return 0;
		}
		
		m_stream.open(m_szFile, ios::app|ios::out);
		while(!m_strBuff.empty())
		{
			m_stream << m_strBuff.front() << endl;
			m_strBuff.pop();
		}
		m_stream.close();
		LockOff(&m_logLock);
		m_lBufferedSize = 0;
		return nRet;
	}
	return 0;
}

void CLogHelper::LogMessage(string &strLog, const bool bFlag)
{
	char szTime[30];
	time_t tm;
	time(&tm);
	sprintf(szTime, "[%s", ctime(&tm));
	szTime[strlen(szTime) - 1] = ']';
	strcat(szTime, ": ");
	string strContent = string(szTime) + strLog;
	LockOn(&m_logLock);
	m_strBuff.push(strContent);
	m_lBufferedSize += strContent.size();
    LockOff(&m_logLock);
        	
	if(bFlag)
	{
		strLog += "\n";
		ThreadSafePrint(strLog.c_str());
		Flush();
	}
	
	if(m_strBuff.size() >= 1000)
	{
		Flush();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -