?? loghandle.cpp
字號:
// name: LogHandle.cpp
// desc: CLogHandle log處理類,記錄 發(fā)送接收的消息
// create time:
// Autor:
// modify:
#include "stdafx.h"
#include "LogHandle.h"
#include "MessageID.h"
#include "ace/Log_Msg.h"
#include <fstream>
#define MEMBER_ACE_DEBUG( X ) \
do { \
int __ace_error = ACE_Log_Msg::last_error_adapter (); \
ACE_Log_Msg *ace___ = &m_log; \
ace___->conditional_set (__FILE__, __LINE__, 0, __ace_error); \
ace___->log X; \
} while (0)
static char chConst[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
////////////////////////////////////////////////////////////////
//
CLogHandle::CLogHandle( )
{
m_pLogOutput = NULL;
}
CLogHandle::~CLogHandle()
{
if( m_pLogOutput != NULL )
{
m_log.clr_flags( ACE_Log_Msg::OSTREAM );
delete m_pLogOutput;
m_pLogOutput = NULL;
}
}
//////////////////////////////////////////////////////////
//
bool CLogHandle::init( const char * logfilename, const char* LogSrc )
{
ACE_ASSERT(m_pLogOutput==NULL);
m_pLogOutput = new std::ofstream( logfilename );
m_log.msg_ostream( m_pLogOutput, 0 );
m_log.set_flags( ACE_Log_Msg::OSTREAM );
m_log.clr_flags( ACE_Log_Msg::STDERR );
MEMBER_ACE_DEBUG( ( LM_DEBUG, ACE_TEXT( " %s, Time[%D], Line[%l]\n" ),
LogSrc) );
return true;
}
void CLogHandle::WriteInfoToLog( const char* strOrient, const PACKET_ADDR &addrRecv, const PACKET_MSG &msgRecv, const int& msgLen )
{
char buf[512];
ACE_TString strInfo = ACE_TEXT("\r\n");
strInfo += strOrient;
sprintf(buf," SIP:%d.%d.%d.%d ",(BYTE)(addrRecv.dwSIP>>24), (BYTE)(addrRecv.dwSIP>>16),
(BYTE)(addrRecv.dwSIP>>8), (BYTE)(addrRecv.dwSIP));
strInfo += buf;
sprintf(buf," DIP:%d.%d.%d.%d ",(BYTE)(addrRecv.dwDIP>>24),
(BYTE)(addrRecv.dwDIP>>16),(BYTE)(addrRecv.dwDIP>>8),(BYTE)(addrRecv.dwDIP));
strInfo += buf;
sprintf(buf," Ha:%2x%2x ",addrRecv.ha[ 1 ], addrRecv.ha[ 0 ]);
strInfo += buf;
sprintf(buf," SessionID:%d ",(ACE_UINT16)msgRecv.wSessionId);
strInfo += buf;
const char * msgIdDesc = MSG_DESC_Find( msgRecv.wMsgId );
sprintf(buf," MsgID:(%4x,%s)", msgRecv.wMsgId, msgIdDesc );
strInfo += buf;
strInfo += "\r\npure:";
ChangeIntToString( ( BYTE* )msgRecv.msg, msgLen, strInfo, true );
MEMBER_ACE_DEBUG( ( LM_DEBUG, ACE_TEXT( " %s, Time[%D], Line[%l]\n" ), strInfo.c_str()) );
}
////////////////////////////////////////////////////////////
// name: ChangeIntToString
// desc: 把整數(shù)轉(zhuǎn)換成 字符串
////////////////////////////////////////////////////////////
void CLogHandle::ChangeIntToString( const BYTE* str, const int nLen, ACE_TString& strRet, bool bPureMsg )
{
BYTE nTmp;
if ( bPureMsg )
{
for ( int i = 0; i < nLen; i ++)
{
nTmp = *( str + i );
strRet += chConst[ ( nTmp >> 4 ) & 0x0F ];
strRet += chConst[ nTmp & 0x0F ];
strRet += " ";
}
return;
}
for ( int i = nLen - 1; i >= 0; i -- )
{
nTmp = *( str + i );
strRet += chConst[ ( nTmp >> 4 ) & 0x0F ];
strRet += chConst[ nTmp & 0x0F ];
strRet += " ";
}
}
void CLogHandle::WriteStringToLog(const char *str)
{
ACE_TString strInfo = "\r\n";
strInfo += str;
MEMBER_ACE_DEBUG( ( LM_DEBUG, ACE_TEXT( " %s, Time[%D], Line[%l]\n" ), strInfo.c_str()) );
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -