输出日志到文件中

通过打印信息来调试代码的方式常用的有两种:

1、通过在Mess中信息窗来显示所需要输出的信息
2、通过将所要输出的信息输出的文件中来查看所需要的信息



1、通过Mess显示信息

此种方式也有两种:

第一种:比较简单

【以显示耗时为例】
CTime ctimestart = ::GetCurrentTime();//add by yuan.wang20171107
/****要测试的耗时代码*******/
CTime ctimeend = ::GetCurrentTime();
CTimeSpan span = ctimeend - ctimestart;
int sss = span.GetTotalSeconds();//系统函数,计算总的耗时单位为秒(s)

CString str;
str.Format(_T("  time: %d"),  sss);
KXLOG_INFO(str,KXSZ_LOG_CATEGORY_COMMON);//将要显示的信息打印到mess中

第二种:自己写一个函数实现显示功能

【实现函数】
void ShowMessage( const char* msg)  // 显示通信信息
{
	HWND hMessWnd = ::FindWindow( "RDBmess"/*"kingmess"*/, NULL);//<Modified by weiwang.shan, Task[12860],2015-12-14>
     char szMess[128];
	 memset(szMess, 0, sizeof(szMess));
     ATOM messAtom;
	 if( hMessWnd)
	 {
         strncpy( szMess, msg,min(127,strlen(msg)) );              
		 if(strlen(msg)>=127)
			 szMess[127]=0;
		 else
		 szMess[strlen(msg)] = 0;
         messAtom = GlobalAddAtom( szMess );
		 ASSERT( messAtom );
		 unsigned long messId = WM_MESSAGE_OUTPUT;
		 ::SendMessage( hMessWnd, WM_MESSAGE_OUTPUT, (WPARAM)messAtom, 0 );
		 GlobalDeleteAtom( messAtom );
	 }
}


调用格式:

		CString str;
		str.Format(_T("Connect::%s  pServer::%s  pNode::%s"), strLocal, pServer, pNode);
		ShowMessage(str);
		
		
	2、将需要打印的信息输出到文件中	
	
	方法一:仅输出所要输出的信息
	
	【实现函数】
	#define TEST_FILE_PATH	_T("c:\\test.txt")//输出路径
	void xxx::MyTrace(CString lpszMsg)//xxx  实现函数所在的类名
	{
		CStdioFile file;
		if (_taccess(TEST_FILE_PATH, 0) == -1)
		{
			if(file.Open(TEST_FILE_PATH, CStdioFile::modeCreate))
			{
				file.Close();
			}
		}
		if (file.Open(TEST_FILE_PATH, CStdioFile::modeWrite | CStdioFile::shareDenyNone))
		{
			file.SeekToEnd();
			CTime time = CTime::GetCurrentTime();
			CString strMsg = time.Format(_T("[%Y-%m-%d-%H-%M-%S]"));
			strMsg += lpszMsg;
			strMsg +=_T("\n");
			file.WriteString(strMsg);
			file.Close();
		}
	}
	
	【调用函数】
				CString Msg;//add by yuan.wang,[test]
				Msg.Format(_T("ValidateItems: IOServerType = %d  pResults[Index].vtCanonicalDataType = %d"),  IOServerType, pResults[Index].vtCanonicalDataType);//add by yuan.wang,[test]
				xxx::MyTrace(Msg);	//add by yuan.wang,[test]
				
		
		
		方法二:可对函数进行修改,通过传递参数  来输出所需要的信息
		
		【实现函数】
		#define TEST_FILE_PATH_0  _T("c:\\testCount.txt")
		void OPCGroupBase::MyTrace(CString lpszMsg,int COUNT)
		{
			CStdioFile file;
			if (_taccess(TEST_FILE_PATH_0, 0) == -1)
			{
				if(file.Open(TEST_FILE_PATH_0, CStdioFile::modeCreate))
				{
					file.Close();
				}
			}
			if (file.Open(TEST_FILE_PATH_0, CStdioFile::modeWrite | CStdioFile::shareDenyNone))
			{
				file.SeekToEnd();
				CTime time = CTime::GetCurrentTime();
				CString strMsg = time.Format(_T("[%Y-%m-%d-%H-%M-%S]"));
				strMsg += lpszMsg;
				CString countstr;
				countstr.Format(_T(";异步请求的数量:%d"),COUNT);
				strMsg += countstr;
				strMsg +=_T("\n");
				file.WriteString(strMsg);
				file.Close();
			}
		}
		
		

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值