TCHAR型版本的写日志函数

2014年3月26日14:07:29

TCHAR型版本的写日志函数

1、使用VS2008创建一个对话框MFC项目。

2、代码:

bool _tGetLocalTimeStr(TCHAR * str,tm * pNowTm)
{ 
	_stprintf(str,_T("%4d-%02d-%02d %02d:%02d:%02d"),pNowTm->tm_year+1900,
		pNowTm->tm_mon+1,pNowTm->tm_mday,pNowTm->tm_hour,pNowTm->tm_min,pNowTm->tm_sec);

	return true;
}

bool _tGetLogLevelStr(TCHAR * tstrLogLevel,int nLogLevel)
{
	switch(nLogLevel)
	{
	case LOG_DEBUG:
		_stprintf(tstrLogLevel,_T("%s"),_T("调试"));
		break;

	case LOG_INFO:
		_stprintf(tstrLogLevel,_T("%s"),_T("信息"));
		break;

	case LOG_ERR:
		_stprintf(tstrLogLevel,_T("%s"),_T("错误"));
		break;

	case LOG_EMERG:
		_stprintf(tstrLogLevel,_T("%s"),_T("紧急"));
		break;

	default:
		_stprintf(tstrLogLevel,_T("%s"),_T("未知"));
		break;
	}

	return true;
}

bool _tGetLogFileName(TCHAR * strFileName,tm * pNowTm)  
{  
	_stprintf(strFileName,_T("%s\\%04d%02d\\%04d%02d%02d.txt"),_T(LOG_FILE_DIR),
		pNowTm->tm_year+1900,pNowTm->tm_mon+1,
		pNowTm->tm_year+1900,pNowTm->tm_mon+1,pNowTm->tm_mday);

	return true;  
}

bool _tWriteLogFile(int nLogLevel,const TCHAR * tstrLog)
{
	if(nLogLevel<g_nLogLevel)
		return false;

	tm aNowTm;
	getLocalTime(&aNowTm);

	char strFileName[_MAX_PATH] = {0};

	if(!protectLogDir(strFileName,&aNowTm))
	{
		printf("创建目录失败\n");
		return false;
	}

	getLogFileName(strFileName,&aNowTm);

	protectLogFileSize(strFileName,&aNowTm);

	TCHAR tstrFileName[_MAX_PATH] = {0};
	_tGetLogFileName(tstrFileName,&aNowTm);

	FILE * pFileW = _tfopen(tstrFileName,_T("a+,ccs= UTF-8"));
	if(NULL == pFileW)    
	{  
		CString sInfo;
		sInfo.Format(_T("文件打开失败"));
		AfxMessageBox(sInfo);

		return false;  
	} 

	TCHAR tstrTime[40] = {0};
	_tGetLocalTimeStr(tstrTime,&aNowTm);

	TCHAR tstrLogLevel[40] = {0};
	_tGetLogLevelStr(tstrLogLevel,nLogLevel);

	TCHAR tstrOut[80] = {0};
	_stprintf(tstrOut,_T("%s:%s:"),tstrTime,tstrLogLevel);

	_ftprintf(pFileW,_T("%s%s\n"),tstrOut,tstrLog);  

	fclose(pFileW);  

	return true;
}

_tWriteLogFile(LOG_ERR,_T("TCHAR 山"));

	CString sInfo;
	sInfo.Format(_T("CString sInfo 山 "));
	_tWriteLogFile(LOG_DEBUG,sInfo);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值